在 4 次失败的用户名/密码登录尝试后,我想拒绝对服务器的 IP 访问。我之前通过像这样将 IP 或块添加到 /etc/apache2/httpd.conf 文件来拒绝访问 Web 服务器。
<Location "/">
Order Allow,Deny
Allow from all
Deny from 1.2.3.4/30 3.4.5.6/15
Deny from 9.4.3.4
</Location>
任何人都知道如何使用 PHP 以编程方式执行此操作,或者可能让 Apache2 以设定的时间间隔查询 mysql 以获取“IP 拒绝列表”?
谢谢!
编辑澄清
在完成表单提交时,查询 mysql 的用户名。如果找到用户名,脚本将继续检查 pw,然后检查失败的登录。如果登录失败计数器 >=4,则用户的帐户被锁定,但他们仍然可以访问服务器。
如果未找到用户名,我会查询差异。用户 IP 表。如果找到 IP 并且 login_counter >=4 使用上面 apache2 httpd.conf 之类的方法阻止来自服务器的 IP。
* *最终编辑/想法
如果我要给 www-data 用户权限,恐怕我会打开一个更大的安全漏洞。编辑 .htaccess 文件,因为没有办法引用。.htaccess 中的一个文件,该文件将是 www-data 可写的,这是我的解决方案。
如果用户名不在 db 中,则将 IP 写入 db 并跟踪每个 IP 的失败尝试。重新访问站点后,如果 IP 在 db 中并且尝试 >=4,则登录脚本 die()。接下来,我将编写一个外部脚本(www-data 无法访问),该脚本每晚轮询数据库以查找尝试次数 >=4 的 IP,并将它们添加到 .htaccess。