2012-03-29 53 views
1

按照该documentation on XSS,我包括在application.confXSS预防playframework1.2.4

future.escapeInTemplates =真

在我的webapp下面的线,用户可以添加注释一个文本字段page.A从用户接受文本输入并保存到db.I进入下面的行为注释

<script> alert('hi') </script>

这会保存在数据库中,并在浏览器中显示相同内容。不会弹出警报弹出窗口。是否意味着XSS问题没有发生? 即使没有在application.conf中添加escapeInTemplates = true,该程序也会提供相同的行为。

有一些警告elsewhere关于将unsanitized html保存到数据库。所以,我应该使用类似Jsoup的东西来清理用户输入之前,将其保存到数据库?

回答

1

escapeInTemplate不会阻止保存html,它会在模板中呈现时将其转义。来自Play Framework 1.2.4 docs

Play的模板引擎会自动转义字符串。如果您真的要在您的模板中插入未转义的HTML,您可以在字符串上使用 raw()Java扩展。但是,如果字符串来自 用户输入,则需要确保首先对其进行消毒。

因此,当显示在模板中的HTML中,<SCRIPT>标记都逃到

&lt;SCRIPT&gt;