【问题标题】:Block ip addresses automatically using PHP and htaccess使用 PHP 和 htaccess 自动阻止 IP 地址
【发布时间】:2012-04-29 19:33:56
【问题描述】:

我有一个登录系统,我正在努力使其尽可能安全。十次尝试失败后,我想阻止该 IP 地址。如何在 PHP 中打开文件并在我的 .htaccess 文件中添加一行以阻止 IP 地址?这是我的 .htaccess 文件:

# Turn on RewriteEngine
RewriteEngine on

# Block IP addresses with too many failed attempts
RewriteCond %{REMOTE_ADDR} ^217.172.179.*$ [OR]
RewriteCond %{REMOTE_ADDR} ^217.172.180.*$
RewriteCond %{REQUEST_URI} !/error/blocked.php$ [NC]
RewriteRule ^(.*)$ /error/blocked.php [R,NC,L]

我想在 PHP 文件中添加这一行:

RewriteCond %{REMOTE_ADDR} ^IPHERE$ [OR]

在适当的位置。

【问题讨论】:

  • ip 不 = 人,攻击者(或普通用户)会通过一系列 ips。
  • 我知道,代码每尝试十次就会一直阻塞新的 ip
  • @ethanh:这听起来不太明智。永久阻止 IP 通常不会有好结果(因为普通用户尝试使用您的网站并由于 IP 阻止而失败)。
  • 是的,任何严重的攻击者每分钟都会通过几百个开放代理。有专门为此设计的服务器软件会比您做得更好
  • 有一个带有 recaptcha 的表单可以解除阻止

标签: php .htaccess ip-address block


【解决方案1】:

我不建议直接编辑 .htaccess 文件。

相反,有一个文件或数据库表来保存所有列入黑名单的 IP 地址,并在 PHP 中进行测试,而不是在 Apache 端。

【讨论】:

  • 不过,问题在于我的主机不允许大量使用数据库。我非常需要使用 htaccess。还有其他方法吗?
  • @ethanh 找个像样的主机?
  • @Ethanh 编辑 htaccess 的问题,如果你犯了错误/语法错误,你在 htaccess 下的整个站点将显示 500 internal server error。
  • 重吗?每个 IP 地址最长为 15 个字符,即使将惊人的 10000 个 IP 地址列入黑名单,也只有不到 150K 的数据。如果这对您的主机来说太多了,您最好切换主机。此外,您可以选择使用文件。
  • 有什么办法吗?
猜你喜欢
  • 2011-06-01
  • 1970-01-01
  • 2013-08-02
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多