Skip to content

关于CSRF

什么是CSRF

英文全称为Cross site request forgery ,也简称为XSRF。

权威的资料: https://owasp.org/www-project-web-security-testing-guide/latest/4-Web_Application_Security_Testing/06-Session_Management_Testing/05-Testing_for_Cross_Site_Request_Forgery。

一个场景

经常看到访问银行账户的例子,如果你在浏览器上访问银行网站,登录了你的银行账户。在此期间,如果访问一个有问题的网站,这个网站内嵌了发送给银行网站请求代码,在你不知道的情况下,向银行网站发送了请求,这个请求可能是转账。如果这个请求被银行网站当作正常请求正常处理了。那么这个银行网站就存在CSRF安全漏洞。

为什么会有CSRF漏洞

假设攻击者是一个导航网站,你点击了某个感兴趣的链接,从浏览器触发了一个对已经登录的银行网站的请求,这个请求是从你的家庭ip和你的浏览器发出的。

浏览器会自动携带银行网站相关的cookie,比如sessionid,如果银行网站仅仅通过这些cookie信息来认证用户的话,那么攻击者的请求就被当作你的正常请求被处理了。

怎么防止CSRF问题

目前最好安全的方案应该就是使用CSRF Token 。其他的方案可以降低攻击的伤害,但都有某些漏洞,比如referer是可以被修改的,而依赖于浏览器的跨域标准方案目前可能并不能覆盖所有用户。

要抵御 CSRF,关键在于在请求中放入黑客所不能伪造的信息,并且该信息不存在于 cookie 之中。可以在 HTTP 请求中以参数的形式加入一个随机产生的 token,并在服务器端建立一个拦截器来验证这个 token,如果请求中没有 token 或者 token 内容不正确,则认为可能是 CSRF 攻击而拒绝该请求。

Published in基础知识

Be First to Comment

Leave a Reply

Your email address will not be published.