gpt4 book ai didi

java - Play 框架中正确转义的指南

转载 作者:IT老高 更新时间:2023-10-28 21:20:05 26 4
gpt4 key购买 nike

我正在尝试绘制 Play 框架如何支持转义。

这是一个很好的页面,说明了所需的功能: https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

所以我试图将其与 Play 模板功能联系起来,并充分了解 Play 做什么和不做什么。

另一个混淆点是对 index.json 的支持(即使用模板构建 JSON 而不是 HTML)。 ${} 会神奇地切换到 JSON 文档中的 JavaScript 转义,还是仍然转义 HTML,因此 JSON 模板中的所有内容都必须具有显式的 escapeJavaScript()

http://www.playframework.org/documentation/1.2/javaextensions 上还有一个 addSlashes() ,但对于我能想到的任何情况,它似乎都不太合适。 (?)

如果有关于如何在 Play 中进行各种逃生操作的详尽指南,那就太好了。在我看来,在某些情况下答案是“自己动手”,但也许我错过了所包含的内容。

最佳答案

我一直在研究这个问题,所以决定根据你已有的内容写下我自己的答案,这个 OWASP cheat sheet以及我自己的一些实验

HTML 转义:

  • ${} 或 escape() 函数

属性转义:(常用属性)

  • 只要将属性用双引号 (") 括起来并使用 ${},就可以在游戏中处理。
  • 对于复杂的属性(href/src/等),请参阅下面的 JavaScript
  • 不安全代码示例
    • <a id=${data.value} href="...">...</a>
    • <a id='${data.value}' href="...">...</a>
  • 这将与 data.value 中断:
    • % href=javascript:alert('XSS')
    • %' href=javascript:alert(window.location)

JavaScript 转义:(和复杂的属性)

CSS 转义:

  • 不确定,因为我不需要这个。
    • 我想你需要以某种方式创建自己的。希望有一些东西可以为您操纵字符串。

网址转义:

关于java - Play 框架中正确转义的指南,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5764679/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com