par*_*oir 0 javascript xss jsp jstl
我有一个人们可以添加他们的东西的表格.但是,在这种形式中,如果他们输入JavaScript而不是文本,他们可以轻松地注入他们想做的任何事情.为了防止它,我可以将escapeXml设置为true,但是普通的HTML也会被转义.
<td><c:out value="${item.textValue}" escapeXml="true" /></td>
Run Code Online (Sandbox Code Playgroud)
有没有其他方法来阻止JavaScript注入而不是将其设置为true?
清理不受信任的HTML
问题
您希望允许不受信任的用户为您网站上的输出提供HTML(例如,作为评论提交).您需要清理此HTML以避免跨站点脚本(XSS)攻击.
解
将jsoup HTML
Cleaner与a指定的配置一起使用Whitelist.Run Code Online (Sandbox Code Playgroud)String unsafe = "<p><a href='http://example.com/' onclick='stealCookies()'>Link</a></p>"; String safe = Jsoup.clean(unsafe, Whitelist.basic()); // now: <p><a href="http://example.com/" rel="nofollow">Link</a></p>
因此,在处理提交的文本时,您基本上需要做的就是以下内容:
String text = request.getParameter("text");
String safe = Jsoup.clean(text, Whitelist.basic());
// Persist 'safe' in DB instead.
Run Code Online (Sandbox Code Playgroud)
Jsoup也提供了更多的优势.另请参阅Java中HTML解析器的优缺点.
| 归档时间: |
|
| 查看次数: |
7948 次 |
| 最近记录: |