CSRF是通过以受害者的名义伪造请求发给受攻击站点,从而执行破坏。
比如说我在银行存有一笔钱,然后通过银行的网站发送一个请求(URL),这个请求就可以把1万块存到我朋友账号下,然后服务器就会向我发送一个session,来验证我的身份。
在我转账后不久,不小心被诱导点进一个黑客做的网站,这个黑客在网站中留下了一条可以转账的请求(URL),但他不能通过安全认证,当我点进去之后,这个请求就会和含有我认证信息的cookie一起发向银行网站,因为这时我浏览器中留下的session还没过期,所以这个url就会得到响应,我的钱也就被转走了。
解决思路
黑客是通过伪造用户的请求来攻击受害服务器的,该请求中的用户验证信息是存在于 cookie 中,因此黑客可以在不知道这些验证信息的情况下,直接用用户自己的 cookie 来通过安全验证。所以要防御CSRF,关键在于在请求中放入黑客不能伪造的信息。
防御 策略
在请求地址中添加 token 并验证:
可以在 HTTP 请求中以参数的形式加入一个随机产生的token,并在服务器端建立一个拦截器来验证这个 token。如果请求中没有 token 或者 token 内容不正确,则可以认为是 CSRF 攻击而拒绝该请求。
网友评论