2012-03-29 49 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;