【发布时间】:2011-08-11 12:04:31
【问题描述】:
我正在尝试绘制 Play 框架如何支持转义。
这是一个很好的页面,说明了所需的功能: https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
所以我试图将其与 Play 模板功能联系起来,并充分了解 Play 做什么和不做什么。
- HTML 转义:
${}或escape()函数 - 属性转义:找不到内置解决方案
- JavaScript 转义:有一个
escapeJavaScript()http://www.playframework.org/documentation/1.2/javaextensions - CSS 转义:我找不到内置解决方案
- URL 转义:没有什么特别的内置,但通常的 Java 解决方案,例如Java equivalent to JavaScript's encodeURIComponent that produces identical output? - 更新:http://www.playframework.org/documentation/1.2/javaextensions 有 urlEncode()
另一个混淆点是对index.json 的支持(即使用模板构建 JSON 而不是 HTML)。 ${} 会神奇地切换到 JSON 文档中的 JavaScript 转义,还是仍然转义 HTML,所以 JSON 模板中的所有内容都必须有明确的 escapeJavaScript()?
http://www.playframework.org/documentation/1.2/javaextensions 上还有一个 addSlashes(),但对于我能想到的任何情况,它似乎都不太合适。 (?)
如果有关于如何在 Play 中进行各种逃生操作的详尽指南,那就太好了。在我看来,在某些情况下答案是“自己动手”,但也许我错过了所包含的内容。
【问题讨论】:
-
添加了赏金。我认为一个很好的答案看起来像是 owasp.org/index.php/… 的 Play 特定版本,它准确地显示了在代码和模板中要做什么,并且还包括 JSON 模板。
-
您当然也可以将答案作为补丁贡献给 Play 文档!
-
另一个有用的实用程序可能是将“asJavascriptString()”转换为 JS 字符串文字。
-
您可以尝试在groups.google.com/group/play-framework 提出这个问题,他们通常反应迅速...
标签: java security escaping xss playframework