【问题标题】:Best approach to handle attempting to hack a website处理试图破解网站的最佳方法
【发布时间】:2014-08-18 10:02:56
【问题描述】:

一点背景。我为一个非营利组织运营该网站。在我发现一个死链接后,我在网站上运行了一个链接检查器,并发现了更多。因此,我实现了一个自定义 404 页面来记录任何失败的链接。这使我可以修复损坏的链接并提醒链接到我们的其他人他们的链接已损坏。

这很快就带来了一个有趣的发现:令人惊讶的是,他们大量尝试规避安全性并利用网站上常见的标准软件包中的漏洞,例如 phpmyadmin、论坛等。

我记录了罪犯的 IP 地址,发现他们几乎都不是来自美国,而且我们的组织严格专注于美国的一个小区域,因此我想通过 PHP 以这样的方式禁止他们as:在头文件中加载违规者列表,所有页面都使用该列表,如果它们属于该列表,则简单地死亡。

这是一个好方法吗?有更好的吗?我担心的是他们发现漏洞并获得访问权限。

【问题讨论】:

  • 如果您只需要禁止所有产生 404 错误的 IP - 查看 fail2ban 软件
  • 这太可怕了。所以,如果你拼错了一个 URL,你会被禁止吗?还是我误会了你。
  • 是的,你误会了。只有黑客攻击会被禁止

标签: php security


【解决方案1】:

您将美国以外的 IP 列入黑名单的方法在短期内会有点效果,但从长远来看确实会是一场失败的战斗。如果您可以在不影响您的用户群的情况下排除美国以外的 IP,您可以利用 Maxmind GeoIP 之类的服务在 PHP 代码中识别国家/地区并拒绝外部的访问。

将这些加载到头文件的列表或数组中可能会在一段时间后变得笨拙,并可能影响性能。您最好将禁止列表存储在数据库中,并在您的站点中建立会话时检查 IP。

但是,最重要的做法是始终确保您的第 3 方软件包(如论坛、博客、wiki 等)与安全补丁保持同步。常见 Web 应用程序的漏洞利用已广为人知且广为人知,因此对它们进行修补至关重要。

附录养成偶尔阅读http://www.exploit-db.com/的习惯,以了解新的漏洞利用。

【讨论】:

  • 老实说,我认为最能帮助阻止坏人的是该站点仅使用内部软件,因此保持最新是没有实际意义的。老实说,被阻止的 IP 最终可能最终会出现在数据库中而不是列表中,现在列表非常小。
【解决方案2】:

要确定来自美国的 IP,MaxMind GeoLite Country 应该这样做。
它是免费GPL的,并且很好地隐藏在他们的网站中。

大多数 IP 定位器都使用这个免费的数据库,
并且根据我的经验它总是让国家正确。

(值得从他们那里购买的是 GeoIP City 数据库,这种数据更加易变,GeoLite City 在不到 70% 的时间里得到它的正确率 - 有些相当壮观错误)

GeoLite 具有数据库和二进制风格。
二进制文件有一个进行索引查找的 php 库。

无论如何,我不会彻底禁止他们

为什么?原因很多。
一种是:人们有时会出国旅行,并且可能想在节日期间查看他们的网站。

如果我是你,我会在页面上放一个 recaptcha,如果他们通过了,就给他们设置一个每天的秘密 cookie
比如:

hash('md5',$salt.date('Ymd'));

(无论如何,md5 不应该用于此目的 - 使用 SHA-1 计算哈希并将其缓存一天)

您也可以将每日秘密 cookie 设置为通过 GeoLite 测试的 IP。
因此您不必在每次访问时都查看它。

【讨论】:

    猜你喜欢
    • 2019-08-06
    • 2012-01-08
    • 1970-01-01
    • 2013-10-09
    • 2011-10-09
    • 2012-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多