gpt4 book ai didi

php - 在数据库中查找哈希 (bcyrpt) 代码并使用输入 (Laravel) 对其进行验证

转载 作者:搜寻专家 更新时间:2023-10-30 22:28:40 24 4
gpt4 key购买 nike

我有一个简单的表单,只有一个输入字段,您可以在其中提交代码(分别是一个键)。在我的数据库中存储了一堆代码(以明文形式),如果表单输入与其中一个代码匹配,您就可以访问一些 Stuff

这是我找出哪些代码已用于获取数据的方式

$usedCode = Stuff::where('code', $request->code)->get();

现在,虽然这很完美,但我想为其添加一些安全性。因为如果有人可以访问我的数据库,他就可以读取代码。

我尝试bcrypt所有的代码,但当然上面的方法不再有效了。

我知道不可能“解密”散列代码,但我该如何解决这个问题?还是没有我需要担心的安全漏洞,我应该只使用明文?

最佳答案

我宁愿建议您实现速率限制。当连续输入超过 3 个无效代码时,每位访问者每分钟只能请求一次,并且 24 小时会被封锁。这样他们就不会向您发送数百万个猜测密码的请求。

当有人可以访问您的数据库时,无论如何所有的赌注都会落空。当您发现自己遭到黑客攻击/数据库被盗时,您还有其他事情需要担心。

此时此刻,您的策略似乎只存在于输入代码之后,然后您就可以得到您的 Stuff

通过同时输入用户必须登录的电子邮件或随附或单独提供的第二个 key (只有合法用户才能拥有)来添加一层安全/验证。

然后您可以使用 user_id/special 额外 key 或其他任何方式对代码进行哈希处理以找到正确的查找 key 。这只是混淆,但会使人们无法获取代码,然后请求您拥有的所有 Stuff

当黑客也可以访问您的 PHP 代码时,所有的赌注都将完全消失,您最好将石板擦干净。

编辑

我的另一个可能想法:将 TheKeyCode + Stuff primary key 存储在数据库 KeyStorage 中。数据库所做的只是存储用户使用的代码。 KeyStorage 的用户名和密码必须与您的生产数据库不同
在您的生产数据库中存储 Stuff + StuffPK。

只有在查找 key 时,您才能建立与 KeyStorage 数据库的连接。该脚本也是唯一保护这些细节的地方。这样,如果您的网站存在弱点,即有人可以清空您的生产数据库,他们将无法获得关键代码。如果您的 key 代码脚本是安全的并且没有缺陷,他们将无法连接到 KeyStorage。

$dsn = 'mysql:dbname=KeyStorage;host=127.0.0.1';
$user = 'keymaster';
$password = 'zuul';

try {
$dbh = new PDO($dsn, $user, $password);
$stmt = $dbh->prepare("SELECT stuff_tm_id FROM gozer WHERE code=:code LIMIT 1");
$stmt->bindParam(':code', $code, PDO::PARAM_STR, 12);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
$stuff = Stufff::find($row['stuff_tm_id']);
} catch (PDOException $e) {
echo 'Where is the gatekeeper';
}

关于php - 在数据库中查找哈希 (bcyrpt) 代码并使用输入 (Laravel) 对其进行验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47306499/

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