关于token防止CSRF的一点想法

一、生成策略
    1、服务器端根据一定算法,生成token;
    2、保存到session中;
    3、前台form表单中取到session放到隐藏标签内;
    4、提交表单后和session中token比较,然后失效掉原先的session;

    示例代码:
class Token(){
		...
	
		session.setAttribute("TOKEN","token");

		...
	}



<form>
   <#-- freemaker取值方式 -->
   <input type="hidden" id="_token" name="_token" value="${TOKEN}" />
</form>
        

class Action(){
	...
	if(session.getAttribute("TOKEN").equals(request.getParameter("_token"))){}
	...		
	}


二、防止CSRF原理
用户请求信息的时候,被骇客获取中间请求信息,当然也会获取token信息,但是因为骇客并不能阻止用户请求到目标网站。
用户请求目标网站之后,token已经被校验。所以骇客获取的token信息依然无用。
当时骇客如果在用户请求到目标网站之前先去请求到目标网站,token的作用就没有了。

     
当然,预防CSRF攻击对refer校验也是不能少的。

猜你喜欢

转载自326866020.iteye.com/blog/2282653