时间:2016-04-01
地点:新大楼 A区 906
验证码
图片验证码
主要实现方式:
- 验证码组件
- 自行开发
验证码问题的主要原因:使用不当
问题1:表单验证与验证码验证分离
描述:找回密码处,先随便填一个用户名,然后输入验证码,再看下请求,如果验证码核验请求和用户名核验请求时分开的,那就呵呵哒~~~
实现手法:爆破验证码验证异步,得到正确的验证码,然后进行表单提交
解决方案:凭据验证即失效
问题2:前端请求刷新/废弃凭证
实现手法:通过抓包软件直接请求验证接口,避免发送刷新/废弃凭证的异步
解决方案:此类操作必须在后端完成
问题3:废弃逻辑有误
实现手法:开发考虑到了验证错误就要废弃当前验证码,但是验证成功却没有删,故第一次手工输入,抓包后重复利用当下验证码即可
解决方案:验证码只要进行过验证,不管是否验证成功,都要进行废弃
问题4:凭证存于cookie
原理:验证码组件如果不提供整套存储,只提供验证码明文和加密字符串对应关系的验证,那么只要有一份这样对应关系就可以绕过验证码
实现手法:手动输入一次,抓包,重放
解决方案:cookie存于客户端,只能表示一个时间点的状态,可伪造,所以此类凭据应该放在session、缓存之类的地方,不可以放在cookie
短信验证码
短信验证码只能提高被刷成本,无法彻底杜绝非正常用户
活动防刷
通过js脚本预先采集用户设备信息,如:操作系统,浏览器名称,版本,UA,是否启用js,flash,cookie,分辨率,语言,时区,ip等。这些维度将是区分用户唯一性的重要凭据
信息窃取
这个听不懂了,不过大概是讲在没有验证referer的来源,导致可以利用第三方站点更新用户信息之类的
越权
这个其实我就听懂一个:价格之类的信息最好不要放到请求里,而是传ID之类的,后台处理的时候根据ID获取才对
PS:在生活这个强敌面前,我们通常表现得有些懦弱,以至于,我们只能在愚人节这种可以放肆表演荒诞的日子里重寻自我。也许我们只能通过谎言才能抵达真实的自己,每个人对另外的人,都只能通过谎言才敢表达情感,哪怕是爱意与珍惜。我们成为了自己的囚徒,而愚人节成了放风的日子。