【问题标题】:Sending unique identifier by email通过电子邮件发送唯一标识符
【发布时间】:2012-04-19 18:56:27
【问题描述】:

我正在开发 asp.net 应用程序。

我必须开发一个功能,系统管理员应该能够发送邀请以通过电子邮件查看用户特定的文档。当用户点击邀请时,系统应该能够识别用户并打开文档。

我正在考虑对每封电子邮件使用 16 位哈希密钥,并在管理员发送邀请时将它们存储在数据库中。当用户点击邀请时,使用 16 位哈希键检索用户详细信息。

但我觉得可能有更好的方法。

请建议我以更好的方式实现该功能。

【问题讨论】:

  • 这不是Guid 的用途吗?
  • 他可能只是没有意识到他可以通过Guid.NewGuid().ToString() 来解决他的问题。
  • 指南非常适合这一点。
  • 是的...16 位哈希键仅是 GUID。
  • 在查询字符串中使用guid时是否需要加密

标签: c# asp.net asp.net-mvc-3


【解决方案1】:

如果您的用户通常必须登录,您可能还希望在打开文档(或回答其他问题)之前强制他们在单击电子邮件中的链接后登录,尤其是当文档在自然。至少您应该在他们打开文档或经过一段时间后禁用密钥。

电子邮件帐户一直受到黑客攻击,您不希望攻击者能够点击同一个链接并访问任何敏感数据。

【讨论】:

  • 用户不会登录系统。这只是通过电子邮件向用户发送一些用户特定的文档。
【解决方案2】:

在数据库中创建一个包含

的表
UserDocuments { UserKey, DocumentKey, GUID, IsRead (false by default)} 

在此表中存储用户和文档键的关系。

生成一个随机公钥 (GUID) 并将此密钥存储在此表中,并使用电子邮件、邮件、电话或任何直接安全的方式将相同的密钥发送给用户。

让文档页面在querystring中包含DocumentKey。

当用户打开文档页面时,根据表中的 DocumentKey、UserKey 对用户进行身份验证。

如果 IsRead 为 false,则不允许。

如果身份验证成功,要求他们输入 GUID。

如果用户标识有效,则再次检查数据库,如果是,则打开文档并将 IsRead 标记为 true。

【讨论】:

  • 我觉得电子邮件和 guid 在表格中就足够了。验证 guid 和提取用户的电子邮件应该足够了。
猜你喜欢
  • 2011-09-07
  • 2012-11-15
  • 2016-07-16
  • 2016-03-29
  • 2012-01-07
  • 2012-04-27
  • 2016-07-04
  • 2018-09-19
相关资源
最近更新 更多