XSS 和 CSRF

LeePink 2018-05-16

XSS:跨站脚本(Cross-site scripting)

CSRF:跨站请求伪造(Cross-site request forgery)

XSS 全称“跨站脚本”,是注入攻击的一种。其特点是不对服务器端造成任何伤害,而是通过一些正常的站内交互途径,例如发布评论,提交含有 JavaScript 的内容文本。这时服务器端如果没有过滤或转义掉这些脚本,作为内容发布到了页面上,其他用户访问这个页面的时候就会运行这些脚本。

运行预期之外的脚本带来的后果有很多中,可能只是简单的恶作剧——一个关不掉的窗口:

while (true) {

    alert("你关不掉我~");

}

XSS和CSRF攻击的防御

防御XSS攻击可以通过以下两方面操作: 

1,对用户表单输入的数据进行过滤,如对HTML,javascript代码进行转义,然后再存入数据库; 

2,HTTPonly。浏览器禁止页面JavaScript访问带有HTTPonly属性的cookie,HTTPonly并不是直接对抗xss攻击的,而是防止xss攻击者窃取cookie。对于存放敏感信息的cookie,如用户认证信息等,可以通过对该cookie添加HTTPonly属性,避免攻击脚本窃取。

CSRF攻击的防御可以通过以下两方面操作: 

1,CSRF是一个伪造用户请求的操作,所以需要构造用户请求的所有参数才可以。表单token通过在请求参数中增加随机数的办法来阻止攻击者获得所有的请求参数:在页面表单中增加一个随机数作为token,每次响应页面的token都不相同,从正常页面提交的请求会包含该token值,而伪造的请求无法获得该值,服务器检查请求参数中token的值是否存在以确定请求提交者是否合法。

2,使用验证码。相对来说,验证码更加简单有效,即提交请求时需要用户输入验证码,以避免用户在不知情的情况下被攻击者伪造请求。

3,Referer check。HTTP请求头的referer域中记录着请求来源,可通过检查请求来源,验证其是否合法。网站一般使用这个功能实现图片防盗链。

相关推荐