【问题标题】:PHP : Protect account-activation script from abusePHP:保护帐户激活脚本免受滥用
【发布时间】:2014-09-13 20:09:51
【问题描述】:

我制作了一个 PHP 脚本,供用户在点击确认链接后激活他们的帐户。它照常工作 - 用户点击链接

www.example.org/activation?code=R4nD0mCoD3

脚本检查数据库中代码是否存在,如果不存在,它将用户重定向到./index.php

那么,人们不能向该网站发送垃圾代码并导致我的数据库崩溃的最佳解决方案是什么?

有什么有用的解决方法吗?遗憾的是,我还没有在 StackOverflow 中找到有关它的内容。

感谢您的帮助:)

【问题讨论】:

  • 从我的头顶你可以记录IP并查看用户是否在一定时间内访问了链接。
  • 那么代码应该足够随机,这样它们就不会发送垃圾代码并激活随机帐户(通常激活链接也会过期)。此外,无论如何,只是垃圾邮件不应该让您的数据库崩溃。
  • 用时间分配把它搞定,然后在第一次/单次使用时删除。 IP 可以更改,因此并不完全可靠。
  • 人们向激活 URL 发送垃圾邮件应该不是什么大问题,原因有两个: 1. 这是一个相当简单的查询。这只是一个简单的选择语句。如果有人恶意这样做是为了对您进行 DDOS,那么有更好的方法可以做到这一点。 2. 为了大规模激活帐户而向 URL 发送垃圾邮件没有任何意义,因此很可能没有人会这样做。即使他们这样做了,也没关系。
  • @Kris 他们也不友好

标签: php database activation-codes


【解决方案1】:
$key = sha1($email.time()); // 'email' or any other value

会给你一个 40 个字符的密钥,应该足够安全,但是如果你真的想阻止选择任何带有密钥的请求,你可以返回一个带有提交按钮的视图(默认禁用),然后使用启用document.ready 上的 javascript,因为大多数机器人都没有启用 javascript。

如果您走这条路,您还可以在启用按钮之前设置 1 或 2 秒超时,这会减慢启用 javascript 的机器人的速度。

如上所述,它是一个简单的查询,因此只要您有一个安全的激活密钥,您就不必担心太多。

【讨论】:

    猜你喜欢
    • 2011-12-03
    • 2023-02-01
    • 2012-06-19
    • 2015-04-22
    • 2011-03-17
    • 2018-12-26
    • 2022-01-21
    • 1970-01-01
    • 2011-05-16
    相关资源
    最近更新 更多