php存储密码,php – 以可逆形式存储密码

首先,说明(希望)显而易见的是,如果可以任何方式避免存储用户名和密码这样做;这是一个很大的责任,如果您的凭据存储被破坏,它可能会为同一用户提供访问许多其他地方(由于密码共享)。

第二,如果您必须存储凭据,而不是使用不可逆的,加密的密码散列来存储密码,那么如果您的数据受到威胁,则密码不能轻易被逆向设计,并且根本不需要存储解密密钥。

如果您必须存储可解密凭据:

>选择一个很好的加密算法 – AES-256,3DES(注明日期)或公钥密码(尽管我认为这是不必要的)。使用来自信誉良好的源代码的加密软件 – 不要尝试滚动您自己,您会误以为是错误的。

>使用安全的随机生成器来生成你的密钥。弱随机性是加密相关安全失败的首要原因,而不是加密算法。

>将加密/解密密钥与您的数据库分开存储在O / S安全文件中,只能在应用程序运行时配置文件中访问。这样,如果您的数据库被破坏(例如通过SQL注入),则您的密钥不会自动受到攻击,因为这将需要访问硬盘。如果您的O / S支持与配置文件相关联的文件加密,请使用它 – 它只能帮助您,并且通常是透明的(例如NTFS加密)。

>如果可行,请存储使用主密码加密的密钥。这通常意味着你的应用程序。将需要在启动时键入的密码 – 在脚本的参数中提供该密码并不好,因为如果您的硬盘被破坏,您必须假定可以查看密钥文件和脚本。

>对于每个凭证集,存储盐(未加密)以及加密数据;这用于“加密”加密密码,使得两个相同的密码不会产生相同的密文 – 因为这样做会导致密码相同。

>如果用户名不需要找到帐户记录(在你的情况下不是这样),请加密用户名和密码。如果您加密两者,则将其加密为一个加密运行,例如

userAndPass =(用户“:”pass);

encryptInit();

加密(盐);

加密(userAndPass);

密文= encryptFinal();

并存储单个blob,使得发生较短的密码文本,这更容易中断,用户名进一步使密码失效。

PS:我不用PHP编程,所以不能在那个环境中评论合适的加密s / w。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值