什么是csrf漏洞,请百度一下。本文在网上各位大神的想法的基础上,补充说明基于html+ajax+restful+soa架构的情况下,如果解决csrf漏洞
前提:
1、假设没有xss漏洞;
2、页面统一用html+js,不用jsp
整体采用token验证方式,
① 服务端添加filter。在mapping里配置需要拦截的请求。这个filter负责生成token、向redis集群中(或其他各个服务模块能够同时访问到的共享区域)写token,而不是向各自的session中写token;向cookie中写入token
1)说明生成token用java的uuid就可以了,这个已经足够随机;
2)解释一下“soa”,在我工作的场景中,同时run了两个virgo tomcat(osgi的应用),分别对外提供两种web服务,对于同一个用户来说,这两个服务公用一个token就可以了,不然页面需要针对两个应用暴露出来的接口分别添加token,增加了额外的工作
② 每个用户登录后,Js从cookie获取到token,放到http的header中,作为发送请求共用的header属性
③ 发请求不做特殊处理,header中的token自动追加到请求上