我正在开发asp.net应用程序。
我必须开发一种功能,系统管理员应该可以通过电子邮件发送邀请以查看用户特定文档。当用户点击邀请时,系统应该能够识别用户并打开文档。
我正在考虑对每封电子邮件使用16位哈希密钥,并在管理员发送邀请时将其存储在数据库中。当用户单击使用16位哈希键检索用户详细信息的邀请时。
但我觉得有更好的方法可以做到。
请建议我以更好的方式实施这项功能。
答案 0 :(得分:0)
如果您的用户通常必须登录,您可能还想强制他们在打开文档之前单击电子邮件中的链接(或回答其他问题)后登录,特别是如果文档完全敏感的话性质。至少应该在打开文档后或经过一段时间后禁用密钥。
电子邮件帐户一直被黑客入侵,您不希望攻击者能够点击同一链接并访问任何敏感数据。
答案 1 :(得分:0)
在数据库中创建一个包含
的表UserDocuments { UserKey, DocumentKey, GUID, IsRead (false by default)}
在此表中存储用户和文档密钥关系。
生成随机公钥(GUID)并将此密钥存储在此表中,并使用电子邮件,邮件,电话或任何直接安全方式将相同密钥发送给用户。
让文档页面包含查询字符串中的DocumentKey。
当用户打开文档页面时,请根据表中的DocumentKey,UserKey对用户进行身份验证。
如果IsRead为false,请不要允许。
如果身份验证超过要求他们输入GUID。
如果用户标识有效,再次检查数据库,如果是,则打开文档并将IsRead标记为真。