【问题标题】:PHP security: How to secure emailed link with get variable?PHP 安全性:如何使用 get 变量保护电子邮件链接?
【发布时间】: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


【解决方案1】:

我猜所有这些哈希都与您数据库中的相应用户相关联。因此,在打开链接时,您可以对用户进行身份验证(要求他/她的密码)以扩展安全性。

【讨论】:

  • 这是一个很好的衡量标准。但如果数据不是很敏感并且链接在其他任何地方都不存在,则没有必要。
  • 哈希与用户无关,而是与链接中可以回复的消息相关联。给出链接的人实际上并没有该网站的凭据,所以我无法检查它。这就像给另一个人访问秘密链接的临时访问权限
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-10-01
  • 2020-09-18
  • 2011-04-02
  • 1970-01-01
  • 1970-01-01
  • 2019-09-03
  • 1970-01-01
相关资源
最近更新 更多