1

我们有一个典型的基于 Web 的登录系统。我们希望客户能够生成一个永不过期的“登录链接”并包含他们的密码。因此,我们希望创建一个链接,其中包含加密形式的密码。注意:我知道最好的方法是查找表,其中每个链接都有一个唯一的键......我不会详细说明为什么这对我们不起作用;它不会。

我不熟悉公钥加密。也许这就是我需要的?

这就是我的想法。这可能还不够,所以请告诉我:

定义:user-password 是指我们想要在链接中加密的用户密码。

我们不能为所有用户密码使用一个加密密钥,因为可以通过生成大量链接来派生加密密钥,所以......

  • 使用标准形式的对称加密。

  • 服务器有一个包含 1000 个复杂加密密钥的文本文件。

  • 生成链接时(使用具有该列表的 PHP 脚本),选择 1000 个加密密钥中的一个来加密其明文密码(按顺序选择,而不是随机选择以防止相同时间被选择) .

  • 在加密用户密码之前,在它的开头添加“s345lm34l5k342342343534432324sdfs”之类的内容,以“加盐”它。(例如:password1 变为 s345lm34l5k342342343534432324sdfspassword1)。“加盐”使得解密字典攻击变得更加困难。这种盐是保密的。但是,当然,它存在被泄露的风险,它是所有密码的一种盐,所以......

  • 此外,密码中还添加了第二个随机生成的盐。此盐使用单个强密码进行加密。因为盐和加密它的密码都是随机的字节模式,所以很难确定盐。

  • 链接生成器工具仅允许您每 10 分钟生成 15 个链接,然后锁定 IP。

  • 除非提供给它的用户/密码实际上是有效的用户/密码组合,否则链接制作工具不会生成链接。这样,如果有人只是尝试生成链接来确定加密信息,它将无法正常工作。尽管如此,从理论上讲,他们可以获得有效的用户/密码并尝试暴力破解。

这安全吗?

4

1 回答 1

5

不,因为加密的密码已经变成了密码。你试过 SSL 吗?SSL 应该可以解决您的问题,您可以在 HTTP 级别上使用纯 URL。

于 2012-06-14T20:23:57.720 回答