XSS和CSRF是黑客进行Web攻击的两个常用手段,主要目的是绕过浏览器同源策略,非法获取信息资源
XSS(Cross Site Scripting):跨站脚本
虽然名字里带“跨站”,但是可以略过,直接看“脚本”。XSS时发生在浏览器渲染HTML时执行了不被预期的脚本指令的一种安全漏洞。
XSS的主要类型:
反射型XSS:利用动态网页特性,将恶意代码的数据提交到服务器,服务器又返回到浏览器,这时浏览器会当作正常响应执行
储存型XSS:依旧是利用动态网页特性,只不过服务器会将恶意代码储存,以后每次渲染网页都将携带恶意代码,影响比反射性要恶劣
DOM XSS:与上述两者的区别在于,DOM型XSS并不依赖服务器端,可以感染静态网页。
XSS的防范策略:
要求开发人员对于任何的用户输入要持有怀疑态度,在渲染HTML的时候采取安全的渲染策略,如对用户输入进行转义
CSRF(Cross-Site Request Forgery):跨站请求伪造
非常容易同XSS混淆,但是CSRF有两个关键词:跨站、请求伪造
CSRF的主要攻击手段为在恶意网页插入目标网站的链接,当目标用户点击恶意网页时,浏览器会同时请求目标网站,如果此时浏览器恰好储存了目标网站的身份认证信息,攻击完成
CSRF的防范策略:
对于服务器资源的写操作尽量避免使用GET请求,同时对POST操作加入CSRF_TOKEN验证(目前Web框架基本都带有此功能)
使用验证码
校验Referer
总结:
Web安全对于开发人员的安全意识要求比较高,主要是因为攻击方和防御方的实力、成本都是不对等的。正所谓“思则有备,有备无患”。