源代码的安全防护之道 越权、鉴权层面




  在网站越权漏洞中,权限管理是一个非常重要的环节,不同的权限处理问题所带来的影响也

往往是不同的。现阶段采用的比较常见的权限密钥管理是RBAC(基于角色的密钥管理),常见

的越权攻击也被划分为水平越权(角色不变)和垂直越权(角色转换)。


 
鉴权过程需要由服务器端完成,而不能由客户端完成,鉴权完成后,给对应的用户一个票据,

即会话Id,用户通过会话Id执行相应的任务。对于单个项目的权限控制,还可以从时间(权限

的有效时间)和空间(权限的影响范围)两个角度进行控制。


 
采用权限原则应该遵循最小化(空间+时间最小化)的原则,即用多少就用多少,多长时间就

用多长时间,而不是“用多少就多长时间"。
 
 
rootuser-user-user权限,需要约束,非系统级或弱系统级服务尽可能不采用或少采用这些

权限。
保护数据的安全生命周期,防止数据泄漏。它包括:安全采集、安全存储、安全传

输、安全处理、安全交换和安全销毁。开发人员需要对所采用的数据保持相当高的敏感性

,特别是用户敏感数据和系统机密数据,每一阶段都要采取相应的保护措施。如下图所示,

常见的数据安全流转注意事项:


 
采用数据,也需要从以解决问题为导向的数据获取转变为以解决问题为导向的数据保护,

先保护用户隐私和系统机密,然后再据此给出解决问题的方法,而不是粗鲁地拉扯数据,

草草了事。采用数据加密技术也是一个值得关注的问题,需要注意加密算法的安全性、

密钥的安全保管、随机性等问题。前面有提到攻击中“猜”的思想,其实从防御的角度也就

是解决确定和随机的问题。


 
在程序中对异常进行处理,实际上就是对确定性处理,对确定的异常进行确定性处理。

 
对异常,尽量不要进行广泛的捕获,这样很容易导致忽略事先未考虑的情况,导致不确定

性。确定性主要用来对抗天灾,增强开发人员对代码的控制,从而减少不确定性带来的

未知风险。而且随机采用,主要是对抗人祸,干扰攻击者,增加攻击难度,正如前面提

到的ASLR技术一样,通过随机干扰内存地址进行预测。在终端隐私保护技术方面,也有

利用随机MAC地址消除网络探针追踪的技术。一般情况下,伪随机数产生器PRNG分为

统计学PRNG和密码PRNG。统计PRNG输出随机数时,比较容易预测;而密码PRNG一

般会内置复杂的熵源,使得输出随机数比较安全,不容易预测。对开发人员来说,通常

可以参考如Java这样的安全随机数API,并且用SeTasteRanknom替代Ranknom来得到

安全随机数生成器。
分享: