软件系统开发时候,关于密码安全的处理逻辑

[网络安全] 季雨林 2020/12/21 13:24:02

作为开发人员,开发出的系统,往往都不可避免的有登录功能。这就涉及到了密码的安全处理问题。


现在的主流方案如下:

1,使用https通信访问api。

这一步实现网络传输中间防止被偷看。

网络传输中流经的各种路由器交换机网关设备网管设备分光器设备等均无法看到明文。最多看到一堆找不到规律密文(比如:ad8g5jhsf....4fds92#%^@a7nb这个样,看不到实际的明文字符是什么)。

2,客户端加密,浏览器在发起https请求之前,就已经本地把密码处理为密文。

这一步除了可以实现防止网络传输中间被偷看之外,还可以防止客户端或者服务端本地的代理工具抓包看到明文。

普通一点的是密码使用base64等编码方案,稍微入门一点有直接使用md5处理;再进一步有使用预设密钥进行对称加密的;目前可见的最安全的是使用公钥进行非对称加密的;当然还有银行一类借助本地插件来实现的更安全方案,但这部分非常复杂,本文不做进一步探讨。

这里其实,作为前端逻辑终究等同于公开的,所以需要靠各种算法来提高被偷窥密码的难度。讲安全风险尽可能缩小到靠近用户的一侧,从而来排除掉技术抓取风险。比如说,张三的老婆偷偷记下了张三的银行卡密码,登录查看了银行卡余额,这种情况显然是无法单一使用密码安全来规避。这时候如果真的还需要技术人员做点啥的话,那就得动用目前APP开发比较流行的“活体验证技术”了。

3,服务端的密文入库。

这一步其实是防止服务器运维人员的滥用泄密,数据库脱库泄密等场景。

作为服务器运维人员,必然是可以看到数据库中存储的数据的样子的,这时候如果存了明文,显然就被看到了。所以密码被处理成密文字符入库的逻辑。这里引发出的问题:加密前密码,服务端都不知道,程序怎么判断密码正确?做法很简单,将登录时候从客户端传来的密码同样逻辑加密后,比对密文是否相等即可。


原文地址: https://www.opengps.cn/Blog/View.aspx?id=838 文章的更新编辑依此链接为准。欢迎关注源站原创文章!

评论

暂无评论!

发表评论:

用于接收作者回复信息
点击更换验证码 - openGPS提示