gpt4 book ai didi

php - 一种将存储在 mysql 中的数据从一个人发送给另一个人的安全方法

转载 作者:行者123 更新时间:2023-11-29 13:54:59 25 4
gpt4 key购买 nike

我正在使用 PHP 和 MySql 编写一个 Web 应用程序。用户 A 将其密码发布到数据库,用户 B 的 PHP 文件应该访问该密码。用户A指定密码的访问持续时间,该密码存储在数据库中。持续时间结束后,表中的记录将自动删除,因此用户 B 的 PHP 文件无法再访问它。

现在我想知道在规定的时间内将密码存储在表中的最佳且安全的方法是什么,这样当数据库遭到破坏时,攻击者就无法知道密码。

最佳答案

为了确保数据免受攻击者攻击您的服务器的影响,必须无法解密数据。如果您(您的服务器)可以解密数据,则可以假设攻击者也可以成功闯入您的服务器。

这意味着您需要加密数据并保留必要的 secret ,以便完全在服务器上解密数据。想到的最明智的事情显然是让用户保守 secret 。

一个好的方案可能是这样的:

  • 为每个用户生成公钥/私钥对,使用用户的密码锁定私钥
  • 将两个 key 存储在您的服务器上
  • 当用户 A 向用户 B 发送内容时,使用用户 B 的公钥对数据进行加密;现在只能使用用户 B 的私钥来解密数据,该私钥是使用用户 B 的密码锁定的,而您没有该密码
  • 当用户B想要检索数据时,询问/使用他的密码来解锁他的私钥以解密数据
  • 切勿将密码或明文数据存储在服务器上的任何位置

最大的问题是可用性,因为如果您从不将用户的密码存储在任何地方,您可能不得不经常询问他。另一件事是你应该真正知道你在这里做什么。即使将密码暂时存储在内存中也可能导致违规,更不用说这整个事情实现起来可能非常棘手,并且如果您不完全理解所涉及的所有概念,很容易出错。

您可以将整个加密和解密过程移至客户端,这样您的服务器就永远不会处理纯密码或纯文本数据。这有多可行取决于您的具体用例。

关于php - 一种将存储在 mysql 中的数据从一个人发送给另一个人的安全方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16007292/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com