CSRF 攻击与防范

CSRF

CSRF(Crossing-site request forgery),跨站请求伪造。盗用个人身份向站点发送恶意请求。

CSRF攻击原理和过程:

  1. 用户C打开浏览器,访问受信任的网站A,向网站A发送请求。
  2. 用户请求信息通过验证后,网站A产生Cookie信息并返回给浏览器,此时用户成功登录A网站,可以发送请求到网站A。
  3. 用户在为退出网站A时,在同一浏览器中,打开网站B,向网站B发送请求。
  4. 网站B收到请求后,返回攻击性代码,请求放完第三方网站A。
  5. 浏览器收到攻击性代码,根据网站B的请求,利用用户C向网站A发送请求,网站A认为用户C发出请求,根据用户C的权限,执行来自网站B的恶意代码。


    CSRF百度百科

CSRF的防范

防御CSRF攻击主要有三种策略:验证HTTP Referer字段;在请求地址中添加token并验证;在HTTP头中自定义属性并验证。

1.验证HTTP Referer字段

HTTP头中Referer字段记录了该请求的来源地址。如果是网站B恶意伪造用户C发出请求,该字段的值判断为不合法,拒绝请求。

2.请求地址中添加token并验证

网站B伪造用户C发出请求,该请求中所有的用户验证信息都是存在于cookie中,防范CSRF的攻击,在请求中除了验证cookie信息,以参数的形式加入随机产生的token,并在服务器端建立拦截器来验证这个token。对于GET请求,token将附在请求地址之后,URL为http://url?csrftoken=tokenvalue。对于POST请求,在

最后加上

3.在HTTP头中自定义属性并验证

这种方法是把token以参数的形式放在HTTP请求中,而是把它放在HTTP头自定义属性里。通过XMLHttpRequest这个类,一次性给所有该类请求加上csrftoken这个HTTP头属性。

参考文章:https://www.ibm.com/developerworks/cn/web/1102_niugang_csrf/

你可能感兴趣的:(CSRF 攻击与防范)