攻击者诱导受害者进入第三方网站,在第三方网站中,向被攻击的网站发送跨站请求。利用受害者在被攻击网站已经获取的注册凭证,绕过后台的用户验证,达到冒充用户对被攻击网站执行某项操作的目的。
黑客伪造用户去发送请求到某个系统中,然后查询你的数据,转账交易之类的。实质就是伪造用户去执行用户操作。
比如利用XSS搞一个而已脚本执行,然后盗取你的浏览器里的cookie。利用cookie伪装成你登录的状态,然后去执行一些请求。
防御CSRF攻击的方法
(1)防止cookie被窃取。可以给网站的cookie设置为HttpOnly属性,进行被黑客的script脚本窃取,这样别人就无法伪造用户登录请求了。
(2)随机token。每次返回一个页面给用户的时候,都会生成一个随机的token附加在页面的隐藏元素里,或者是在Header头里面,同时在redis数据库里存下这个token,然后浏览器发送球球的时候附加随机token,验证通过才能执行请求。此时如果使用 postman
构造请求就不知道随机token是什么了。
(3)验证码。页面提交必须搞一个验证码,类似推动拼图,输入验证码等,必须通过验证码才能执行请求。这样就可以避免黑客直接伪造请求发送过来。这种方式可以在用户进行支付交易,登录系统场景下应用。
(4)Referer请求头。http请求里面有一个 referer
请求头,代表的就是请求的来源(告诉服务器我这个请求是从哪个页面链接过来的),可以限制这个 referer
请求是不是从自己系统的页面过来的,如果是的话才执行,否则就不执行。