【问题标题】:PHP - difficulty Passing encrypted string to another page via string encryptionPHP - 通过字符串加密将加密字符串传递到另一个页面的困难
【发布时间】:2012-05-18 08:02:35
【问题描述】:

Best way to use PHP to encrypt and decrypt passwords?致意

我在将加密字符串传递到另一个页面时遇到了问题。

就我而言,我想向用户发送一个注册链接,例如

www.xyz.com/reg.php?x=xxxxxxxxxxx

其中 xxxxxxx 包含电子邮件地址和用户全名信息,以字符串形式加密序列化数组。

但是当用户点击链接时,解密后的字符串与加密前的原始字符串不同。

有时信息如果部分解密,其余部分是垃圾。

谁能解释为什么会这样?

提前致谢。

【问题讨论】:

  • 您应该传递一个映射回数据库中信息的令牌,而不是所有信息。

标签: php encryption


【解决方案1】:

您正在使用 URL 不安全字符,例如 +(来自 base64)。你需要urlencode() / urldecode() 你的参数。

【讨论】:

  • 嗯我不知道这个..也许这就是我需要的。感谢您的帮助。
【解决方案2】:

个人信息根本不应该在url中传递,有hash函数等方法更安全。您描述的这种情况是错误的,请尝试寻求有关如何正确传递 url 参数的安全标准。

还有很多与传递 url 参数有关的漏洞,例如参数污染。

【讨论】:

  • 现在我想发送一个链接,该链接会自动填充用户侧的电子邮件地址和收件人姓名文本框.. 之后,用户只需单击注册并发送。我的第一个想法是,我将这些电子邮件地址和全名插入数据库并分配一个映射 .. 的令牌,就像你说的那样。但是,我正在尝试惰性方法,但我不知道传递电子邮件地址(即使加密)不是正确的做法..无论如何..感谢您的建议
  • 但你说:“n which xxxxxxx 包含电子邮件地址和用户的全名信息在一个加密的序列化数组中作为字符串。”
  • 我做到了..一旦我序列化了数组,我就对其进行加密..但是正如 jimpic 所说,我没有使用 urlencode 并且加密字符串中可能有不安全的字符..这会导致问题。这可以解释为什么 20 个加密字符串中可能有 1 个可以被解密,而其余的则失败。
【解决方案3】:

我认为您在数据库中创建了一个字段,例如 act_key .. 当您在此处生成 (www.xyz.com/reg.php?x=xxxxxxxxxxx) 之类的 URL 时,您可以生成带有数字的随机字符串并将其存储在 act_key 字段中... 好吧

当用户首先单击激活链接时,您检查并匹配此 act_key .. 如果匹配或找到,那么您将获得电子邮件 ID 或其他详细信息... 并处理下一步

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2013-08-07
    • 2011-12-07
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多