在我管理的两个网站上,我们管理的一个安全例程已经检测到一些有问题的查询字符串,如果IP没有被欺骗,则主要来自俄罗斯联邦。
例如/member.php?data=phentermine-prices'"
或/member.php?data=get-online-viagra'"
我们使用SQL注入标记的URI(在本例中为引号)的做法是使用PHP header("Location:")
并将它们引导到别处。
我的问题是这是否足够或是最佳做法。我知道该网站没有受到损害,因为我有cron作业在几分钟内提醒我任何修改或新文件,但我仍然担心聚合网站的反向链接中毒。我应该发送403或404或301 http标头吗?
请记住,拒绝或重定向的预定接收者是来自Google等人的合法蜘蛛,他们都遵循这些在SEO坏人网站上托管的虚假反向链接。我们希望让Google知道这些因我们对传入请求的处理而言是虚假的。
答案 0 :(得分:1)
每个人都没有普遍的情况。如果PHP中的问题检测适合您 - 只需使用它。它更容易,更灵活。如果您发现您认为无效/非法的网址使用标准HTTP响应:
header( 'HTTP/1.1 403' );
但是这可能表明某些事情是禁止的,因此可能无法阻止攻击 - 在这种情况下使用:
header( 'HTTP/1.1 404' );
如果我是你,我不会重定向。重定向时 - 您必须重定向到某个地方。此页面包含的位置和内容是什么?您为攻击您网站的人提供的信息越少越好。
答案 1 :(得分:1)
如果我在PHP脚本中检测到攻击者,我还会在文件中添加sleep(2)
,因此黑客会受到限制。我有一些好男人试图破解Joomla,这是阻止他们的唯一方法。简单的HTTP标头(404,403,500 ...)并没有阻止他们从我的服务器ddos。他们使用了来自世界各地的许多不同的IP地址(可能是僵尸网络),所以我无法阻止IP。
我认为如果他们知道自己拥有正确的URI,他们就不关心HTTP标头。但是如果他们的剧本在得到回复之前必须等待两秒钟,那么攻击我的成本太高了。
答案 2 :(得分:0)
这既不够,也不是最佳做法。
我不知道你的服务器设置是什么,但就PHP而言,你可以编写一个小的php处理程序来检测那些查询字符串,然后根据请求URI的IP在htacces中写一个拒绝规则。 / p>
如果您可以向我提供有关您的服务器设置的更多详细信息,我很乐意扩展您的响应。
答案 3 :(得分:0)
你正在使用PHP,所以我猜你在Apache服务器上? - 如果是这样,那么您可以使用 mod_rewrite 在请求到达您的应用程序之前停止请求。
您可以考虑一些技巧:
从IP地址范围过滤:
RewriteCond%{REMOTE_ADDR} ^ 118 \ .87 \。
过滤掉可疑查询表达式:
RewriteCond%{QUERY_STRING} ^。(viagra | phentermine | pharma | meds)。
谷歌有一个拒绝“非自然链接”的工具有一个tutorial here - 谷歌也有一个user guide
您可以将虚假请求引导至记录引荐来源网址的脚本 - 这将有助于您的黑名单文件。