-2

我有这个功能代码来尝试为 GET 获得更多保护。

(例如index.php?name=eval(base64_decode(EVIL+CODE))

global $user_ID; 

    if($user_ID) {
                if(!current_user_can('administrator')) {
                        if (strlen($_SERVER['REQUEST_URI']) > 255 ||
                                stripos($_SERVER['REQUEST_URI'], "eval(") ||
                                stripos($_SERVER['REQUEST_URI'], "CONCAT") ||
                                stripos($_SERVER['REQUEST_URI'], "UNION+SELECT") ||
                                stripos($_SERVER['REQUEST_URI'], "base64")) {
                                        @header("HTTP/1.1 414 Request-URI Too Long");
                                        @header("Status: 414 Request-URI Too Long");
                                        @header("Connection: Close");
                                        @exit;
                        }
                }
        }

我可以添加什么来帮助保护 POST ?(尽可能多地 - 不可能完全密封 - 我知道)

4

1 回答 1

1

不是一个真正的答案,但评论的信息太多了。

我将根据您的最后评论在这里写下我的答案:

@PeeHaa 我知道他们老了。我知道一些漏洞已经修复。我正在运行 200 多个站点,其中一些可以追溯到 2008 年并使用插件或片段。(如 phpthumb(旧版本))不太安全。对不起,我不明白为什么这个问题是一个糟糕的问题——因为方法/代码不好,或者因为为 get/post 添加新的安全层的想法太糟糕了?如果是代码,那么请有人教我如何正确地做到这一点,如果这个想法太可怕了-请解释原因。我现在所得到的只是反对票:-)

那个代码是非常可怕的 imo,不应该是你应该使用的东西。只有在评论中您才注意到您想要保护 WP 安装的事实。这是您的问题/标签中缺少的一条非常重要的信息。

无论如何,如上所述,代码非常可怕,但由于我从未使用过 WP(对于可怕的代码问题),我不会评判。但我会告诉你我认为该代码有什么不好的地方:

global $user_ID; 

使用global关键字是一个坏习惯恕我直言。如有可能,请记住新代码。现在该if声明:

我不知道strlen($_SERVER['REQUEST_URI']) > 255应该防止什么,但这可能是 WP 或某些插件在某些时候搞砸的事实。

stripos($_SERVER['REQUEST_URI'], "eval(")

上面看起来并不奇怪,因为只有当你执行来自客户端的代码时才会出现问题(这是你永远不会做的事情(除非你使用了一些非常错误的 WP 插件)),但这也只是完全错误。stripos()也可能返回0,这将是虚假的。所以那个检查可能没用。我对wordpress的了解不够,也不知道这样的事情是否可行:

http://your-domain/eval(insert malicious code here)

REQUEST_URI总是以/. 关于那些错误被抑制的标题的最后一件事。我怀疑当标头已经发送时它可以防止错误。在这种情况下会发生什么。检查是否仍然有效。

您可以做的最好的事情是升级 WP 和插件或摆脱烂插件。那将是理想的。但是,正如您所说,您有 200 次安装,这可能在短期内无法完成。因此,您可能必须对确实像这样的代码进行排序以“修复”任何问题。

为了在未来获得更好的答案,您可能会考虑在您的问题中提供更多详细信息(例如,您正在尝试预防 WP 安装的事实)。我也认为这仍然是一个非常广泛的问题。通常最好问一个具体的问题。

于 2012-06-12T08:15:58.623 回答