本质:产生的原因本质上是参数可知或可预测
防御:
1、加密参数:加密加盐,不可知,不可预测
忧虑,引入其他麻烦:一、数据分析困难
二、正常功能会受影响,比如url收藏
2、验证码:用户在确认操作
破解:只防止了用户不知情点击的情况,用户知情时也可以诱导点击
3、referer check:验证上一url,源检测
破解:一、诱导合理顺序产生合理源referer
二、有些应用可以自定义referer
忧虑:referer check不一定可用,有些应用禁止了(处于隐私考虑或其他)
辅助手段
4、token:增加一个随机参数 (问题:只是参数值随机、不可预测,还是参数名也有必要随机? 名也随机不好传参?),只有服务端与客户端知道的秘密(如可在cookie中也放置,对比与提交的参数(表单)中是否一致,具体应用场景具体设计)
缺陷:只防护单纯的csrf,当存在xss时,token也被获取
具体应用场景、业务可使用、适用的不同,有些简单设置,有些严格设置;设想如果可以token加密怎样? 这几种都应用怎样?
但具体业务场景中不太现实,毕竟还需要为业务做数据分析、考虑用户体验等等;
so,具体应用、场景,具体分析、设计;
有不对的地方欢迎大家指正,谢谢