【发布时间】:2013-12-02 07:17:17
【问题描述】:
我有一个通过电子邮件发送给用户的链接:
例如http://somesite/path/page.php?hash=19a893775098b441b8b088387c19fccce2a1fce3
此链接通过电子邮件发送给用户,并通过 PHP 针对数据库验证此唯一哈希。这是使用适当的准备好的查询,以便无法执行注入。此链接在网站的任何地方也不可见,并在一个月后过期。如果哈希验证失败,页面会生成401 Unauthorized
当用户访问链接时,他将能够输入回复(保存到数据库中)。理想情况下,我还想在链接中显示一些(可能)半敏感数据。那会是个好主意吗?我怎样才能进一步保护这样的电子邮件链接?
【问题讨论】:
-
如果用户已注册,我还会在 url 中添加一个用户 ID。但我认为将敏感数据添加到 url 查询不是一个好主意,因为很多人使用没有保护等的免费 WIFIS ......并且使用一些嗅探软件很容易捕获 url/密码。
-
如何“保护”链接?阅读电子邮件的每个人都可以使用该链接。您所指的通常称为“令牌”。尝试谷歌寻求解决方案。
-
@DBPBTPV 如果我只允许回复(数据库保存)而不显示敏感数据怎么办?但是,如果我还添加了一个用户 ID,那么它将只是 url 中的另一个 get 变量
-
@arkascha 我想保护链接。是的,任何阅读电子邮件的人都应该可以访问该链接,因为它是服务器生成的电子邮件,只发给一个电子邮件地址。该哈希是为这封电子邮件生成的
-
@Benjamin 嗯,是的,所以您的链接与此人的电子邮件一样安全,一般来说“不是很安全”,尤其是在传输过程中。如果有敏感信息,或者对收件人“回复”以外的其他人产生影响,我仍然需要先进行适当的身份验证。最后,这是一个判断电话。 (在页面上添加警告以阻止欺诈是否有帮助?“您正在以未经身份验证的用户身份从 IP 地址 x.x.x.x 发布......”等)
标签: php security email variables get