挺倒霉的一件事情,提交上去的项目,被测试组打了回来,原因是。。。给报了200多个跨站点请求伪造漏洞,于是我就去翻资料查阅,这个东西到底是个什么东东,了解后,觉得其实也挺简单的,相应的给出了自己的解决办法,在这里与大家共同分享。。。
首先说明一下什么是
跨站点请求伪造,发生在一个恶意网站导致一个用户的网页浏览器在一个信任的站点上执行一个有害的行为。举个例子来说就是:
首先张三登录A系统,验证登录成功后,在张三机器上产生A系统的cookie jseesionid,之后,张三在没有退出A系统的情况下访问系统B,B系统发出一个要求,要求访问A,当然这一块张三自己可能都不知道B对他做了手脚,那么此时,浏览器会带着张三刚开始访问A系统的有效信息去操作A系统,从而达到模拟张三合法用户的目的。
解决方案:
方案一:
1。如果为GET请求,则只允许接收数据,不准修改服务器上的任何数据。
2. 如果为POST请求,则要求其包含一个伪随机值,该随机值扔到session中,每次都做一下对比,如果跟session的值相同则放过,如果不同,则命其跳回。。
方案二:
建立一个过滤器,对所有请求都做过滤,要求每一次请求都带有伪随机值,跟session中的值做对比,相同放过,不相同,命令其跳回。
此仅为个人解决方案!希望能帮到大家。