处理企图破解网站的最佳方法

时间:2011-08-04 02:08:50

标签: php security

一点背景。我为非营利组织运营网站。在我注意到死链接后,我在网站上运行了一个链接检查程序,并发现了更多。所以,我实现了一个自定义404页面来记录任何失败的链接。这允许我修复我的断开的链接,并提醒链接到我们的链接被破坏的其他人。

这导致一个有趣的发现相当快。他们是惊人的很多尝试,以规避安全和利用标准软件包漏洞的网站上常见的,像phpMyAdmin,论坛等

我登录了罪犯的IP地址,并几乎完全找到它们不是来自美国,而我们的组织以这样一种方式严格专注于在美国的一个小区域,由此我想到只是禁止他们通过PHP为:加载在头文件,用于由所有页罪犯的列表,并且如果它们属于列表简单地与消息管芯

这是一个好方法吗?还有更好的东西吗?我关心的是,他们找到漏洞并获得访问权。

2 个答案:

答案 0 :(得分:4)

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

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

然而,最重要的行动方针是始终确保您的第三方软件包(如论坛,博客,维基等)与安全补丁保持同步。常见Web应用程序的漏洞利用非常广为人知并广泛宣传,因此对其进行修补至关重要。

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

答案 1 :(得分:1)

要确定来自美国的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。
因此,您无需在每次访问时都查看它。

相关问题