您好,欢迎访问一九零五行业门户网

消除不受信任的HTML (来防止XSS攻击)_html/css_WEB-ITnose

问题 在做网站的时候,经常会提供用户评论的功能。有些不怀好意的用户,会搞一些脚本到评论内容中,而这些脚本可能会破坏整个页面的行为,更严重的是获取一些机要信息,此时需要清理该html,以避免跨站脚本cross-site scripting攻击(xss)。
方法 使用jsoup html cleaner 方法进行清除,但需要指定一个可配置的 whitelist。
string unsafe = link
;string safe = jsoup.clean(unsafe, whitelist.basic());// now: link

说明 xss又叫css (cross site script) ,跨站脚本攻击。它指的是恶意攻击者往web页面里插入恶意html代码,当用户浏览该页之时,嵌入其中web里面的html代码会被执行,从而达到恶意攻击用户的特殊目的。xss属于被动式的攻击,因为其被动且不好利用,所以许多人常忽略其危害性。所以我们经常只让用户输入纯文本的内容,但这样用户体验就比较差了。
一个更好的解决方法就是使用一个富文本编辑器wysiwyg如ckeditor 和 tinymce。这些可以输出html并能够让用户可视化编辑。虽然他们可以在客户端进行校验,但是这样还不够安全,需要在服务器端进行校验并清除有害的html代码,这样才能确保输入到你网站的html是安全的。否则,攻击者能够绕过客户端的javascript验证,并注入不安全的hmtl直接进入您的网站。
jsoup的whitelist清理器能够在服务器端对用户输入的html进行过滤,只输出一些安全的标签和属性。
jsoup提供了一系列的whitelist基本配置,能够满足大多数要求;但如有必要,也可以进行修改,不过要小心。
这个cleaner非常好用不仅可以避免xss攻击,还可以限制用户可以输入的标签范围。
参见 参阅xss cheat sheet ,有一个例子可以了解为什么不能使用正则表达式,而采用安全的whitelist parser-based清理器才是正确的选择。
参阅cleaner ,了解如何返回一个 document 对象,而不是字符串
参阅whitelist,了解如何创建一个自定义的whitelist
nofollow 链接属性了解
其它类似信息

推荐信息