有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

playframework1中的java XSS预防。2.4

根据documentation on XSS,我在应用程序中包括了以下行。形态

future.escapeInTemplates=true

在我的webapp中,用户可以向页面添加评论。textfield接受用户的文本输入并将其保存到db。我输入以下行作为注释

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

这将按原样保存在数据库中,并在浏览器中显示。没有出现警报弹出窗口。这是否意味着XSS问题没有发生? 即使不在应用程序中添加escapeInTemplates=true。conf时,程序会给出相同的行为

有一些关于将未初始化的html保存到数据库的警告elsewhere。那么,在将用户输入保存到db之前,我是否应该使用Jsoup之类的工具来清理用户输入


共 (1) 个答案

  1. # 1 楼答案

    escapeInTemplate不会阻止保存html,在模板中呈现时会转义html。从Play Framework 1.2.4 docs开始:

    Play’s template engine automatically escapes strings. If you really need to insert unescaped HTML in your templates, you can do so using the raw() Java extension on the string. But if the string comes from a user input, you need to make sure it is sanitized first.

    因此,当html显示在模板中时,<SCRIPT>标记转义到

    &lt;SCRIPT&gt;