XSS 跨站脚本攻击
浏览器错误的将攻击者提供的用户输入数据当作JavaScript脚本给执行了。
按是否在应用中存储分为: 存储型XSS和反射性XSS
按是否和服务器有交互:Server Side XSS 和 Dom based XSS
攻击者可以利用XSS漏洞来窃取包括用户身份信息在内的各种敏感信息、修改Web页面以欺骗用户,甚至控制受害者浏览器、或者和其他漏洞结合起来行成蠕虫攻击
防御:
最佳做法:对数据进行严格的输出编码,使得攻击者提供的数据不再被浏览器认为是脚本而被误执行
设置CSP HTTP Header、输入验证、开启浏览器XSS防御
CSRF攻击 跨站请求伪造
本质:重要操作的所有参数都是可以被攻击者猜测到的。攻击者预测出URL的所有参数与参数值,才能成功地构造一个伪造的请求。
防御方法: 验证码、 Referer Check 检查请求是否来自合法的源(可被伪造)
通用方法:Token 使用Anti-CSRF Token 在URL中保持原参数不变,新增一个参数Token。Token的值是随机的(必须使用足够安全的随机数生成算法,或者采用真随机数生成器),其为用户与服务器所共同持有,可以放在用户的Session中,或者浏览器的Cookie中。 注意保密,尽量把Token放在表单中(构造一个隐藏的input元素),以POST提交,避免Token泄露。
注意:如果网站有XSS漏洞或者一些跨域漏洞,可能导致Token泄露。
在XSS攻击下,读取Token值,然后再构造出一个合法的请求,可以称为:XSRF。
React 默认会转义所有字符串。
AngularJS 使用AngularJS中的SCE来防御XSS攻击。