一点背景。我为非营利组织运营网站。在我注意到死链接后,我在网站上运行了一个链接检查程序,并发现了更多。所以,我实现了一个自定义404页面来记录任何失败的链接。这允许我修复我的断开的链接,并提醒链接到我们的链接被破坏的其他人。
这导致一个有趣的发现相当快。他们是惊人的很多尝试,以规避安全和利用标准软件包漏洞的网站上常见的,像phpMyAdmin,论坛等
我登录了罪犯的IP地址,并几乎完全找到它们不是来自美国,而我们的组织以这样一种方式严格专注于在美国的一个小区域,由此我想到只是禁止他们通过PHP为:加载在头文件,用于由所有页罪犯的列表,并且如果它们属于列表简单地与消息管芯
这是一个好方法吗?还有更好的东西吗?我关心的是,他们将找到漏洞并获得访问权。
答案 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。
因此,您无需在每次访问时都查看它。