跨站点请求伪造(CSRF)

        CSRF(Cross-site request forgery)跨站请求伪造,也被称为“One Click Attack”或者Session Riding,通常缩写为CSRF或者XSRF,是一种对网站的恶意利用。CSRF则通过伪装来自受信任用户的请求来利用受信任的网站。

一、浏览器的 Cookie 策略

        浏览器所持有的 Cookie 分为两种:一种是“Session Cookie”,又称“临时 Cookie”;另一种是“Third-party Cookie”,也成为“本地 Cookie”。

        两者的区别在于,Third-party Cookie 服务器在 Set-Cookie 时指定了 Expire 时间,只有到了 Expire 时间后 Cookie 才会失效,所以这种 Cookie 会保存在本地;而 Session Cookie 则没有指定 Expire 时间,所以浏览器关闭后,Session Cookie 就失效了。

        如果浏览器从一个域的页面中,要加载另一个域的资源,由于安全问题,某些浏览器会阻止 Third-pary Cookie 的发送。

二、CSRF 的防御

1 验证码

2 Referer Check

        Referer Check 在互联网中最常见的应用就是“防止图片盗链”。同理,Referer Check 也可以被用于检查请求是否来自合法的“源”。

3 Anti CSRF Token

三、CSRF 的本质

        CSRF 为什么能够攻击成功?其本质原因是重要操作的所有参数都是可以被攻击者猜测到的。

        在 URL 中,保持原参数不变,新增一个参数 Token。这个 Token 的值是随机的,不可预测。

        Token 需要同时放在表单和 Session 中。在提交请求时,服务器只需验证表单中的 Token,与用户 Session(或 Cookie)中的 Token 是否一致,如果一致,则认为是合法请求;如果不一致,或者有一个为空,则认为请求不合法,可能发生了 CSRF 攻击。

posted @ 2018-03-27 18:28  水果味的C  阅读(184)  评论(0编辑  收藏  举报