安全街
一步步,我们的信息安全时代

1.一句话说CSRF

CSRF攻击就是用户在访问恶意网站时,恶意网站向目标网站A,发送携带有网站A合法身份认证的恶意请求的攻击。

CSRF经常被拿来与XSS比较,它们之间的不同之处:
XSS是通过HTML注入来执行恶意代码
CSRF是通过借用用户合法身份来发起恶意请求
XSS可以获取用户身份通行证,而CSRF只能借用身份,本身未获取。
XSS可以为所欲为,因为它可以操纵代码;而CSRF只能循规蹈矩,因为它只能对目标网站发起合法的请求。

2.CSRF漏洞的检测

抓包将Referer字段去掉后,再提交,如果数据有效,说明大概率存在CSRF漏洞。

3.CSRF防御术

说一个不算防御的防御:重要请求尽量使用POST,因为GET请求太容易利用了。当然,POST请求也可以通过构造表单或者AJAX加以利用,不过显然没有GET那么直接。

3.1 检查Referer

接收到数据包时,检查Referer网站是不是可信的,如果不是就将数据包丢掉。简单又轻松,然而低版本浏览器的Referer可以被篡改,着啊种方式并不能完全杜绝CSRF。

3.2 验证码

当一个重要请求需要验证码时,就不能直接CSRF了,因为这涉及到用户交互,不知道验证码无法触发请求。

3.3 在请求地址中使用Token

用户登录后在session中随机生成一个token,在发送请求时,将这个token添加到请求中,一起发送给服务端。如果没有token或者token不正确,请求实效。由于黑客无法获取token,因此无法进行CSRF。
不过这种方法需要给各种请求添加Token字段,工作量之大无法想象。

3.4 在HTTP头中自定义Token属性

这种方法就是把上面那个Token放进HTTP头里了,这样所有的请求都会自动带上Token,方便快捷。

这篇文章还没有人发言,快抢第一!

发表评论