关于Token 验证与存储 xss csrf 攻击防御措施
1.如果只存入cookie会被xss攻击劫持,并发动csrf攻击,但可以设置cookie的HTTPOnly属性,不被浏览器获取到cookie,但也不能完全保证不被xss劫持。
2.同时存入cookie和session,session中的token放入表单的隐藏域中,传到后台与cookie中的进行判断,但是使用session会被黑客劫持,所以在http的情况下不使用session,但是可以使用https.
3.推荐存入redis中,分布式or微架构优先考虑,存入redis可以手动的控制令牌的失效时间.
注意细节:
1.访问需要的token验证的接口前,发生操作的请求前先获取安全加密token,然后请求接口带上token。
事例:
进入修改页面,增加页面,点击删除按钮时,异步刷新获取最新的token,并存入于cookie。
表单提交将Token的值放入隐藏域中,ajax提交使用XMLHttpRequest请求,尽量使用ajax或form表单提交,不能用get请求方式。
2.每次访问过后使令牌失效,并重写生成令牌,设置token的有效时间,越短越好。
3.GET请求不能使用token验证。
4.csrf 防御只能最大限度的防御,并不能完全防御。