1

我有我的第一个网站。我遇到的首要任务之一是创建一个注册页面来注册一个新用户。我担心这样做的“安全”方法。本质上,注册页面是一个将数据库插入用户表的窗口。我担心脚本小子会拿到我的注册表并用错误的插入无情地冲击数据库。

我研究并努力解决的几件事:

  • Captchas:我真的希望能够在没有这些的情况下创建我的网站,因为根据我的研究,听起来它们在拒绝机器人方面的效率约为 20%,而它们肯定会激怒真正的人类用户。如果可能的话,我想让验证码要么在我的网站上不存在,要么在我似乎被脚本化时动态显示。

  • IP 欺骗 - 我玩弄了基于 IP 进行检查的想法,这样如果我从同一个 IP 收到很多连续的表单提交,我可以给他们一个验证码。但是,据我了解,欺骗 IP 地址是微不足道的,并且检查适当欺骗的人的重复提交是无效的。

  • 通过电子邮件链接进行注册确认 - 您在论坛等上经常看到这种情况。用户注册后,您向他们发送带有唯一令牌的确认链接,以验证他们有一个真实的邮箱并且没有放入假邮箱(或者可能确实打错了)。虽然这可能会在验证用户是否“真实”方面增加一些价值,但您已经将其插入到用户表中,因此脚本小子在用无用信息填充数据库时占了上风。

站点开发人员如何防止脚本小子向他们的数据库发送大量无用用户的垃圾邮件?如果我上面所做的假设是正确的,我看不出有一种有效的方法来防止它。我曾玩弄过其他想法,但在我考虑它们之后都是废话。我目前使用的搜索词没有出现很多结果,所以如果这是一个被夸大的话题,我深表歉意。

4

2 回答 2

2

我不完全同意消除该captcha部分,但是您可以将一些机器人困在蜜罐中。制作一个对最终用户不可见的输入字段,但对于机器人仍然存在。如果提交的表单包含fake-field值然后忽略它,真正的用户看不到不可见的字段!:)

例如:

// jQuery
$("#username").hide();

// HTML
<input type="text" name="real-username">
<input type="text" name="username" id="username">

// PHP
if (!empty($_REQUEST['username']))
    die('Oops!');

请记住,您需要忽略该username字段,您的真实用户名在real-username.

于 2013-04-08T18:57:18.920 回答
1

我找到了确认电子邮件,并结合清理任务(删除 x 天内未确认的所有注册)将有所帮助。您将无法阻止所有垃圾邮件注册,但在数据库中进行一些工作将有助于保持表格较小。

于 2013-04-08T17:21:47.593 回答