防御CSRF攻击的一般方法

 提示:转载请注明原文链接

 本文永久链接:https://www.360us.net/article/41.html

1、验证码

验证码被认为是对抗CSRF攻击最简洁而有效的防御方法

CSRF攻击的过程,往往是在用户不知情的情况下构造了网络请求。而验证码,则强制用户必须与应用交互,才能完成最终请求。

因此,在通常情况下,验证码能够很好地遏制CSRF攻击。

通常我们不可能在所有地方都加上验证码,所有这个也只能作为一种辅助手段。


2、Referer Check

就是检查请求的来源,这个还可以用来做图片的防盗链。

Referer是由浏览器通过HTTP头来发送的。但是,这个头也不是什么时候都有的,很多情况下都是没有的,还可以通过程序来自定义。

这个也只能作为一个辅助手段。


3、Anti CSRF Token

防御CSRF的主要方法是使用一个Token。

CSRF的本质原因就是重要操作的所有参数都能被攻击者猜测到。

攻击者只有预测出一个URL的所有参数与参数值,才能成功构造出一个伪造的请求,反之,攻击者无法攻击成功。

因此我们可以在每个请求上面新家一个token参数,这个token是随机的,不可预测的,并且只有用户和服务器知晓,不能被第三方获取。

提交请求时,服务器只需验证请求中的token是否存在及合法就可以了。

Token的几个使用原则:

3.1、token要足够随机,不可预测。

3.2、token的目的不是为了防止重复提交。

所以为了使用方便,可以允许在一个用户的有效生命周期内,在token消耗掉前都可以使用同一个token。但是如果用户已经提交了表单,则应该重新生成一个新的token。

3.3、使用token时应该注意保密性,不要泄露了token。

当网站存在XSS漏洞的时候,token的方法就会变得无效。



参考:《白帽子将Web安全》

 评论
暂无评论