通过电子邮件发送唯一标识符

时间:2012-04-19 18:56:27

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

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

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

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

但我觉得有更好的方法可以做到。

请建议我以更好的方式实施这项功能。

2 个答案:

答案 0 :(得分:0)

如果您的用户通常必须登录,您可能还想强制他们在打开文档之前单击电子邮件中的链接(或回答其他问题)后登录,特别是如果文档完全敏感的话性质。至少应该在打开文档后或经过一段时间后禁用密钥。

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

答案 1 :(得分:0)

在数据库中创建一个包含

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

在此表中存储用户和文档密钥关系。

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

让文档页面包含查询字符串中的DocumentKey。

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

如果IsRead为false,请不要允许。

如果身份验证超过要求他们输入GUID。

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