【问题标题】:Include an encrypted password in a URL? Possible?在 URL 中包含加密密码?可能的?
【发布时间】:2012-06-14 06:22:02
【问题描述】:

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

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

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

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

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

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

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

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

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

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

  • 链接制作工具每10分钟只能生成15个链接,然后锁定IP。

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

这样安全吗?

【问题讨论】:

  • 为了清楚起见,第二个盐是链接的公开部分。 (虽然它是加密的。)
  • 在分析 url 提交的密码时,如何识别 1000 个密码中的哪一个?
  • @bkr 我忘了提到后端会跟踪使用的密钥。

标签: encryption encryption-symmetric


【解决方案1】:

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

【讨论】:

  • 我认为这是一个足以接受作为答案的观点。我们需要以不同的方式设计系统,因为我们需要一种撤销访问权限的方法。
猜你喜欢
  • 2018-09-05
  • 2018-04-13
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2012-03-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多