2

在我管理的两个站点上,我们的一个安全例程一直在检测一些有问题的查询字符串,这些查询字符串主要来自俄罗斯联邦,如果 IP 没有被欺骗的话。

例如/member.php?data=phentermine-prices'"/member.php?data=get-online-viagra'"

我们对带有 SQL 注入标记的 URI(在本例中为引号)的实践是使用 PHPheader("Location:")并将它们定向到其他地方。

我的问题是这是否足够或最佳实践。我知道该站点没有受到损害,因为我有 cron 作业可以在几分钟内提醒我任何修改或新文件,但我仍然担心来自聚合站点的反向链接中毒。我应该发送 403 或 404 或 301 http 标头吗?

请记住,拒绝或重定向的预期接收者是来自 Google 等的合法蜘蛛,所有这些蜘蛛都遵循 SEO 坏人网站上托管的这些虚假反向链接。我们希望通过我们对传入请求的处理让 Google 知道这些是虚假的。

4

4 回答 4

1

没有适合所有人的通用场景。如果 PHP 中的问题检测对您有用 - 只需使用它。它更容易,更灵活。如果您发现一个您认为无效/非法的网址,请使用标准 HTTP 响应:

header( 'HTTP/1.1 403' );

但这可能表明某事存在并且被禁止,因此可能无法防止攻击 - 在这种情况下使用:

header( 'HTTP/1.1 404' );

如果我是你,我不会重定向。重定向时 - 您必须重定向到某个地方。该页面将包含哪些内容?您向任何攻击您网站的人提供的信息越少 - 越好。

于 2013-11-04T12:18:57.843 回答
1

如果我在 PHP 脚本中检测到攻击者,我也会添加sleep(2)到文件中,这样黑客就会受到限制。我有一些好人试图破解 Joomla,这是阻止他们的唯一方法。简单的 HTTP 标头(404、403、500...)并没有阻止它们对我的服务器进行 ddos​​ 攻击。他们使用了来自世界各地的许多不同的 IP 地址(可能是僵尸网络),所以我无法阻止 IP 地址。

如果他们知道自己有正确的 URI,我认为他们不会关心 HTTP 标头。但是,如果他们的脚本必须等待两秒钟才能得到响应,那么他们破解我的成本就太高了。

于 2013-11-04T13:37:39.127 回答
0

您使用的是 PHP,所以我猜您是在 Apache 服务器上?- 如果是这样,那么您可以使用mod_rewrite在请求到达您的应用程序之前停止它们。

您可以考虑以下几种技术:

  1. 从 IP 地址范围过滤:

    重写条件 %{REMOTE_ADDR} ^118\.87\。

  2. 过滤掉可疑的查询表达式:

    重写条件 %{QUERY_STRING} ^。(伟哥|芬特明|制药|药物)。

本教程中有更多内容

谷歌有一个拒绝“非自然链接”的工具,这里有一个教程——谷歌也有一个用户指南

您可以将虚假请求定向到记录引荐来源网址的脚本 - 这将有助于您的黑名单文件。

于 2013-10-29T22:23:32.067 回答
0

这既不够,也不是最佳实践。

我不知道您的服务器设置是什么,但就 PHP 而言,您可以编写一个小型 php 处理程序来检测这些查询字符串,然后根据请求 URI 的 IP 在 htacces 中编写拒绝规则。

如果您可以向我提供有关您的服务器设置的更多详细信息,我将很乐意扩展响应。

于 2013-10-29T21:46:38.690 回答