本文为HTML标准解读系列文章,其他文章详见这里。
根据2017年的《开放web应用安全项目》:XSS是最普遍存在的页面漏洞之一,有2/3的web应用存在XSS漏洞。XSS,中文名叫跨站脚本攻击:黑客利用页面的中的漏洞,给页面注入恶意的客户端代码,这些代码被页面认为是受信任的代码,于是可以绕过同源策略的限制并获得相关的用户权限。
常见的避免XSS攻击的手段包括:
-
对所有用户的输入进行过滤,比如对
<
、>
等敏感符号进行转义。 -
对HTML代码进行“净化”,一个比较有名的库叫DOMPurify,它会把HTML语句中含有XSS风险的的地方过滤掉。如:
DOMPurify.sanitize('<img src=x οnerrοr=alert(1)//>'); // becomes <img src="x"> DOMPurify.sanitize('<svg><g/οnlοad=alert(2)//<p>'); // becomes <svg><g></g></svg> DOMPurify.sanitize('<p>abc<iframe//src=jAva	script:alert(3)>def</p>'); // becomes <p>abc</p>