csrf攻击主要是恶意者利用用户的登录态,诱使用户点击链接,使用户发送了非自愿的请求。
主要防御手段:1.使恶意者无法构造完整的url,因为攻击者需要在自己的恶意网站里嵌入某个url,然后让用户点击,才能发送攻击,所以通过在url里插入一些随机数,使得恶意者无法猜中完整的url,例外一种方式是通过input hidden来实现。用户每次提交的时候带上input里的值,而恶意者的网站是很难猜到这个值的。
2使用referer头,这个限制性比较大,主要原理是通过判断用户发送的请求是从哪个网页操作的,从而判断该请求的合法性。
另外,随机数csrfcode放在cookie是不可以的,如果把这个随机数放到cookie,那么用户点击恶意者网站的url时是会把这个csrfcode带上的,所以就会失去了作用。
最后提一下csdn网站的问题,当我们访问csdn的某个页面时,csdn好像并没有判断登录态,比如我登录自己的账号,然后打开我的一个博客,然后打开一个新的页面点击退出再登录新的账号,甚至在原网页点击退出,页面刷新后,显示的内容还是我刚才打开的那个页面,我觉得这时候,我是不能再访问这个页面的了,毕竟我的登录态已经失效。总之csdn上,如果我现在一个页面上登录,打开我的博客,然后再新开一个页面,点击退出再登录其他的账号,那么刷新原来页面的时候发现账号是新的账号,但是内容却是原来账号的内容,甚至更神奇的是我在后来登录的账号里写的博客,居然会保存在前面登录的账号里。
还有一个问题是csdn网站似乎存在一个csrf漏洞。。。。。。已邮件告诉csdn管理员,等待回复。。。