在 Play 框架中正确转义的指南
我试图弄清楚Play框架如何支持转义。
这是一个很好的页面,拼出了所需的功能:https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet
因此,我试图将其与Play模板功能联系起来,并完全了解Play做什么和不做什么。
- HTML 转义:或函数
${}
escape()
- 属性转义:找不到内置解决方案
- JavaScript逃避:有一个 http://www.playframework.org/documentation/1.2/javaextensions
escapeJavaScript()
- CSS 转义:我找不到内置解决方案
- URL转义:没有什么特别的内置,但通常的Java解决方案,例如Java相当于JavaScript的encodeURIComponent,产生相同的输出? - 更新:在 http://www.playframework.org/documentation/1.2/javaextensions
另一个混淆点是支持(即使用模板来构建JSON而不是HTML)。在JSON文档中是否神奇地切换到JavaScript转义,或者它是否仍然转义HTML,因此JSON模板中的所有内容都必须具有显式?index.json
${}
escapeJavaScript()
http://www.playframework.org/documentation/1.2/javaextensions 上还有一个addSlashes(),但它似乎不太适合我能想到的任何情况。(?)
如果有一个关于如何在Play中逃脱的所有口味的彻底指导,那就太好了。在我看来,在几种情况下,答案是“滚你自己的”,但也许我错过了包含的内容。