前言
写到这里基本上笔者在请求中遇到的问题,以及运用到实践中的解决方案,基本上分为,请求唯一性,单设备登录,单点登录,MD5校验 这几种校验的小技巧,在之前都对着几种校验方式进行也一些独立的说明(还没有看过的可以先去游览查阅一下,在请求安全模块中) 在本章里面会着重说明怎么样综合使用,如何获得比较高的安全性,以及会简单介绍一下方便使用的一种高级加密方法.
1.回顾
1.1 单设备登录.单点登录
每次调用登录接口获取的ID都是一个临时ID.当下次登录的时候重新生成在覆盖,就可以达到单设备登录的
效果了,这个临时ID对应着真正的用户ID每次客户端请求都是拿着临时ID请求过来然后服务器做验证,而且
这个临时ID和真正ID是存储在一个共享的区域,其他的模块都能获取到这一项对应
1.2 MD5校验
MD5在请求安全中关键用到的基本上就是对于请求参数进行校验,对与服务器来言排除系统问题最大的问题
就是害怕请求被拦截,拦截修改之后就有很多漏洞的可能性了, 为了避免被拦截,参数被修改这种文件的常
用方法就是对请求参数进行校验,就算拦截了请求参数修改了只要模拟不出MD5加密出来的值,在服务器过滤
器直接就会进行拦截. 我这边推荐的请求校验方法在传递参数的时候带上 MD5值 随机数 时间戳 当然这几
个都是由客户端生成 MD5=MD5(随机数+时间戳+MD5(KEY+公司名+项目名)) 当然这个规则也是可以定制的
请求参数在服务器拦截器就用客户端传递过来的 随机数 时间戳 来做校验如果不通过就不让继续访问
1.3 请求的唯一性
如果别人不破解MD5直接解析Ddos攻击当然要有个拦截机制,请求唯一性是对于一个用户ID这个都是用户的唯
一标示在这个简单的解决方案中有两个比较重要的东西,随机数,时间戳,通过这两个东西加上用户唯一标示就
能实现一套简单的请求唯一性验证
2. 密文加密-STD3Des
STD3Des加密是一种高级可逆加密方法,他需要加解密双方指定两个东西一个是key,一个是vi(vi是偏移量)
密文加密意义在于别人捕获请求不会看到传递参数的具体值
3. 结合增加安全性
1.因为有单设备登录ID是动态的,所以吧ID作为MD5的条件加密会更安全
2.MD5的随机数和时间戳与唯一请求的使用的相同,应为有MD5加密,所以模拟随机数和时间戳需要先破解MD5校验
3.密文加密可以保证所有参数都是密文,进一步增加随机数和时间戳被修改问题
4. 性能
很多人会在乎接口加了这么多东西性能会降低多少呢 ,我经过实践下来其中性能消耗最大的是加解密,损耗在3%~8%
请求量越大损耗越大其他加起来基本保持在1%左右,基本上也是可以接受的,而且结合起来安全性还是相对比较高的
5.总结
通过以上所述各项小技巧的组合确实可以得到不错的安全性,基本上关于请求安全就告一段落了,笔者水平有限希望
大家多提意见,多交流!