关于管理系统开发的密码安全设想

时间:2022-12-15 09:26:58

没能在网上找到这个问题的经验之谈,故把我的想法写下来,希望大家帮忙分析这种方案的利弊。

在做系统管理的经验中,感觉到管理系统的开发人员应该为数据库连接密码和系统登录密码采取安全措施。两者看起来相似但细究起来又不太一样:数据库连接密码要存储在数据访问客户端,但要防止管理员以外的人员获取;而系统登录密码要存储在数据库中,要防止用户(尤其是管理员)获取其他人员的密码。
针对它们各自的特征,我打算:对于前者,自行定制一种简单但不容易被人从密文猜测出算法的加解密算法,当数据库创建或修改密码后,用加密算法处理该密码然后将密文存储在配置文件中,连接数据库时先解密该密文后传输。此法要保证加密解密算法不公开。没有调研过是否有现成的可用算法,但个人认为如果是现成的算法,既然是公开了也就没有什么保密的作用了。对于那种用到公钥、私钥的算法我没有什么研究,不过个人觉得不太适宜此类项目,较复杂,既难以利用又容易出错(因为要学好都不容易,一知半解就去用难免不出问题),另外这种算法能否满足我这里的需求对我来说仍是未知数(请大虾们指教)。
对于后者,创建或修改密码时用MD5之类的算法算出密码的校验和然后存储到数据库中,用户登录时再用相同的算法算一遍校验和并与数据库中的数据进行匹配,由于校验和算法是不可逆的,这就能保证即使看到了数据库中存储的校验和也无法知道密码明文了。

这里没有考虑如何规避客户端与数据库之间的明文传输被网络监听,在数据库连接密码方面我们寄希望于数据库访问组件本身采取了加密传输机制,而系统账号的加密(相对于原密码的MD5码来说)传输则需要在数据库端建立一个解密服务,一旦决定要做这一层的加密解密工作就得考虑在此服务上实现所有本系统的网络传输数据的分析,工程量不小啊!或许在底层使用VPN或是数据库本身提供的加密传输机制较明智,但这就要求运行环境确实支持相应功能。