我正在我的网站上实施黑名单系统,监控联系表单的可疑使用情况(垃圾内容和过高频率)。
当我发现某人/机器人符合我的黑名单标准时,我想将他们作为黑名单实体发送到我的数据库。
我的问题是,我应该将它们作为 IP 还是域名列入黑名单?
据我所知,将 IP 列入黑名单将会更加有效,因为我允许人们在表单中输入他们的电子邮件地址,并且他们可以轻松地定期更改他们的域名。
然而,缺点是,如果我将某个 IP 列入黑名单,我可能会将一大群共享一个 IP 的人列入黑名单,而实际上只有一个人是坏人(即大学校园、咖啡店等)。
我还缺少什么解决方案吗?
答案1
最简单的方法是限制黑名单的时间。
第一次将 IP 放入数据库时,将超时设置为 3 天或类似时间。
对于该 IP 的后续提交:
或者类似的东西,SMTP 灰名单的工作原理类似于此,并且非常有效。
答案2
我意识到我加入这个讨论有点晚了,但我把这个想法更进一步,认为我的技术可能对其他人有用。我会自动阻止作恶者,但允许他们自己解除阻止。这样,如果共享(或 NATted)IP 被阻止,就不会是永久性的。方法如下:
我在 robots.txt 中屏蔽的一个或多个子目录(文件夹)中设置了一个默认(脚本)页面。如果该页面被行为不当的机器人(或窥探者)加载,则会将其 IP 地址添加到屏蔽列表中。但我有一个 403(“未授权”)错误处理程序,可将这些被屏蔽的 IP 重定向到一个页面,该页面解释了发生了什么,并包含一个验证码,人类可以使用该验证码来解除对 IP 的屏蔽。这样,如果某个 IP 因某人将其用于不良目的而被屏蔽,下一个获得该 IP 的人不会被永久屏蔽——只是有点不方便。当然,如果某个 IP 不断被多次重新屏蔽,我可以采取进一步的手动措施来解决这个问题。
具体逻辑如下:
- 若IP没被封,则允许正常访问。
- 如果访问者导航到禁区,则阻止他们的 IP。
- 如果 IP 被阻止,则将所有访问重定向到包含验证码的“解除阻止”表单。
- 如果用户手动输入正确的验证码,则从阻止列表中删除该 IP(并记录该事实)。
- 冲洗、涂抹泡沫,重复以上步骤以进行进一步的操作。
就是这样!一个脚本文件用于处理阻止通知和解除阻止验证码提交。robots.txt 文件中有一个条目(最少)。htaccess 文件中有一个 403 重定向。
希望这对某些人有帮助。它对我来说非常有效。我在多个网站上使用它。
答案3
嗯...这取决于网站上使用的后端类型,例如,Wordpress 安装中使用了一个 Bad Behavior 插件,它可以完成黑名单工作。它具有灵活性,您可以通过 ip、域或用户代理字符串将其列入黑名单。此外,我想知道并假设您已安装验证码?
答案4
嗯,我猜你说的域名是指将电子邮件地址列入黑名单?因为将整个域名列入黑名单可以阻止比将 IP 列入黑名单更多的用户。
我想我会选择 ip,尽管我认为你从错误的角度来解决这个问题。
为了防止机器人/垃圾邮件机器人发帖,请使用验证码,例如验证码非常好(而且你可以使用它来帮助将旧书数字化)。
为了阻止不良用户,IP 很容易更改,因为大多数人没有固定 IP(固定 IP 通常需要额外付费),因此他们只需重新连接即可,直到您再次发现他们。实际上,要真正阻止“邪恶”用户是相当困难的,但诀窍似乎是不让被禁用户知道他们被禁了,因此让联系表单表现得好像他们没有被禁一样,这样他们就需要更长的时间来弄清楚并更改他们的电子邮件/IP。但是,是的,如果您可以禁止他们的 IP 以及他们的电子邮件地址,为什么还要这样做呢?