我正在使用PHP和MySql编写一个webapp。用户A将其密码发布到数据库,用户B的PHP文件应该访问密码。用户A指定密码的访问持续时间,该密码存储在数据库中。在持续时间结束后,表中的记录会自动删除,因此用户B的PHP文件无法再访问它。
现在我想知道在规定的持续时间内将密码存储在表中的最佳和最安全的方式是什么,这样当数据库受到攻击时,攻击者就无法知道密码。
答案 0 :(得分:1)
为了使攻击者无法攻击您的服务器,您一定无法解密数据。如果您(您的服务器)可以解密数据,您可以假设攻击者也可以成功地攻击您的服务器。
这意味着您需要加密数据并保留必要的秘密以完全解密关闭您的服务器。想到的最明智的事情显然是让用户保守秘密。
一个好的计划可能是这样的:
最大的问题是可用性,因为如果你从不在任何地方存储用户的密码,你可能不得不经常问他。另一件事是你应该真的知道你在这里做了什么。即使在内存中暂时使用密码也可能导致违规,更不用说实现这一切并非常棘手,如果您不完全理解所有相关概念,那么很容易出错。
您可以将整个加密和解密过程移动到客户端,因此您的服务器从不处理普通密码或纯文本数据。这有多可行取决于您的具体用例。