1.什么是CSRF攻击
CSRF(Cross-site request forgery),跨站请求伪造。CSRF攻击的原理如下:1)用户登录正常的网站A后,在本地生成Cookie2)在不登出A的情况下,访问了危险网站B3)网站B中含有网站A的链接,点击网站A的链接,会调用本地cookie验证,自动登录网站A。CSRF攻击源于WEB的隐式身份验证机制,WEB的身份验证机制虽然可以保证一个请求是来自于某个用户的浏览器,但却无法保证该请求是用户批准发送的。
2.原理图如下:
3.CSRF的防御
1)Cookie Hashing(所有表单都包含同一个伪随机值):CSRF的问题在于网站验证cookie存在的情况下,黑客可以直接登录网站。我们可以在访问网站时,服务端生成一个伪随机数,访问网站每个页面时带上这个伪随机数,服务端验证cookie和伪随机数是否一致。这样可以确保网站A的链接不是由第三方网站直接跳转过来的,因为第三方网站是无法获得网站的cookie伪随机数的。2)验证码
登录网站时设置验证码,是很常用的方式,可以完全解决CSRF的问题。