网页抓取数据(一个更好的解决方法和解决办法有哪些?-八维教育)
优采云 发布时间: 2021-10-08 15:06网页抓取数据(一个更好的解决方法和解决办法有哪些?-八维教育)
问题
在做网站的时候,往往会提供用户评论功能。一些恶意用户会在评论内容中添加一些脚本,这些脚本可能会破坏整个页面的行为,更严重的是获取一些机密信息。这时,需要清理 HTML 以避免跨站脚本。-站点脚本攻击(XSS)。
方法
使用jsoup HTML Cleaner方法进行清理,但是需要指定一个可配置的白名单。
String unsafe =
"<p><a href='http://example.com/' οnclick='stealCookies()'>Link</a>";
String safe = Jsoup.clean(unsafe, Whitelist.basic());
// now:
Link</p>
阐明
XSS 也称为 CSS(Cross Site Script),一种跨站脚本攻击。它是指恶意攻击者在网页中插入恶意 html 代码。当用户浏览页面时,会执行嵌入在Web中的html代码,从而达到恶意攻击用户的特殊目的。XSS 是一种被动攻击,因为它是被动的且不易于使用,所以很多人往往忽略了它的危害性。所以我们往往只让用户输入纯文本的内容,但是这种方式用户体验比较差。
更好的解决方案是使用富文本编辑器 WYSIWYG,例如 CKEditor 和 TinyMCE。这些可以输出 HTML 并允许用户进行可视化编辑。虽然他们可以在客户端进行验证,但这还不够安全。您需要在服务器端验证并移除有害的 HTML 代码,以确保输入到您的 网站 中的 HTML 是安全的。否则,攻击者可以绕过客户端 Javascript 验证并将不安全的 HMTL 直接注入您的 网站。
jsoup的白名单清理器可以过滤服务端用户输入的HTML,只输出一些安全的标签和属性。
jsoup提供了一系列的白名单基础配置,可以满足大部分需求;但如果有必要,你也可以修改它,但要小心。
这个清理器非常好用,不仅可以避免XSS攻击,还可以限制用户可以输入的标签范围。
看