【问题标题】:How to do encryption and decryption in query string value?如何对查询字符串值进行加密和解密?
【发布时间】:2013-06-25 20:00:32
【问题描述】:

我想使用双向算法(意味着我应该同时加密和解密)。下面是我的

场景:

我有一个应用程序,用户可以通过提供他们的名字、姓氏和电子邮件地址来注册。一旦数据存储在数据库中,一封邮件将发送到注册用户的注册电子邮件地址,内容如下

请点击链接配置您的账户: http://mysitename.com?somepage.aspx?enc=EmailaddresinencyptedFormat

我正在做的是以加密格式在查询字符串中附加注册用户的注册电子邮件地址。用户将单击以下链接并将被重定向到用户输入他/她的用户名和密码的配置页面。然后查询字符串中的输入数据和加密的电子邮件地址将传递给服务,服务将解密它们并验证电子邮件地址。

必填:

什么算法可以用来加密和解密?让我知道这种情况下的最佳算法。 请帮帮我

【问题讨论】:

  • 您不能将电子邮件用作加密的秘密信息,因为大多数人的电子邮件地址都是公开的。 p.s.你为什么要这样做?为什么不能遵循最佳做法?
  • 当我在链接中传递电子邮件地址时:mysitename.com?somepage.aspx?enc=someexample@abc.comeveybody 可以看到电子邮件地址,每个人都可以使用自己的电子邮件地址访问链接。
  • 您是否考虑过使用令牌? IE。您将信息保存在数据库中,并只给用户一个随机的、长的、无意义的 id 来引用该信息。 example.com/foo.aspx?enc=klwurh2o3mhf2837gox7g2
  • 根据我的说法,您希望我在用户注册期间使用某种算法生成一个令牌,将它们存储在数据库中并嵌入链接并作为电子邮件发送。收到电子邮件后,用户将单击链接并在页面中填写必要的信息,并在提交时将填写的信息与令牌一起发送并基于令牌更新数据库中的必要信息?有道理吗?
  • 这个问题似乎离题了,因为它是关于选择最佳加密算法的,这是一个基于安全性的问题,而不是一个编程问题。

标签: encryption


【解决方案1】:

不要加密电子邮件地址,而是在数据库中放置一个足够大的 100% 随机值(例如 GUID 或 UUID),并将其与注册人的电子邮件地址的加盐哈希值相关联。将 GUID 发送给链接中的用户。然后,当他们完成后,您可以对他们在第二个链接上填写的电子邮件进行加盐哈希处理,并将其与电子邮件地址匹配。

由于它是随机的,因此不可能猜测随机 url 并偶然发现其他人的注册,并且即使数据库泄漏,也只会暴露经过加盐哈希处理的电子邮件,无法将其解密为电子邮件。

http://www.martinstoeckli.ch/php/php.html#bcrypt 是关于散列是什么以及它的用途的一个很好的资源。

【讨论】:

  • 你能分享任何示例代码吗?你说的算法名称是什么?如果没有意义,请多多包涵……帮帮我
  • 很好的解决方案,但我认为您不需要对电子邮件地址进行加盐或哈希处理。由于此值仅保留在您的数据库中,我认为只需使用 UUID 保存电子邮件地址就足够了。
  • @korius 如果数据库泄露,尚未完成注册的人的电子邮件地址将被利用。我同意,否则它非常小。
猜你喜欢
  • 1970-01-01
  • 2015-04-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-07-01
相关资源
最近更新 更多