CSRF

 

  CSRF是Cross Site Request Forgery的缩写(也缩写为XSRF),直译过来就是跨站请求伪造的意思。

 

  举个CSRF攻击的例子:我们登录bbs论坛后修改个人资料,论坛服务器更新个人资料的url是www.bbs.com/save.do?user=xx&password=xx&birthday=xxx。当然要修改个人资料的前提是此用户要先登录,登录成功记录到cookie后,论坛就认为此用户是合法的,那么此用户修改个人资料(提交url:www.bbs.com/save.do?user=xx&password=xx&birthday=xxx)是可以的。

想象一个坏蛋在论坛中发了一个图片,你也已经登录了论坛,你看到这个图片很好奇,就点进去,但是这个图片的链接是“www.bbs.com/save.do?user=xx&password=xx&birthday=xxx”,服务器会响应这个链接请求的,因为你已经登录了,这样点击图片后你的个人资料就被修改了。

 

    网站服务器怎么避免CSRF漏洞?

    我们正常在网站中修改数据都是通过提交form表单进行的,提交后无论是get或post方式都会带上新数据,并生成一个请求保存数据的url发送给网站服务器,然后网站服务器会做响应。如果form表单是他人恶意伪造的,而不是网站正常渲染出来的form表单,那么你提交了这个恶意的表单后就会被修改数据。那么网站怎么判断这个表单提交过来的url是合法正常的,还是他人恶意构造的呢?很简单,只要网站在正常渲染form表单的时候,在session中存放一个token,并put到form表单中的一个隐藏域,当提交form表单后这个token也被一并提交给服务器,这时候服务器拿session中的token和提交的这个token做对比,如果一样则代表这是一个正常生成的表单,是一个合法的url,否则就是非法的。因为构造恶意的表单无法得知你的session回话中的token值,所以就算是伪造token也无法伪造正确的token,这样就可以避免被攻击了。

 

 

 

你可能感兴趣的:(CSRF)