PHP获取/后期保护(wordpress)

时间:2012-06-11 10:24:52

标签: php post get protection

我有这个功能代码试图为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?(尽可能 - 不可能完全密封 - 我知道)

1 个答案:

答案 0 :(得分:1)

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

我会根据您的last comment

在此处写下我的答案
  

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

这段代码非常可怕,不应该是你应该使用的东西。只有在注释中,您才注意到要保护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始终以/开头。 关于错误被压抑的那些标题的最后一件事。我怀疑它可以在the headers are already sent时防止错误。在这种情况下会发生什么。检查是否仍然有效。

你可以做的最好的事情是升级WP和插件或摆脱腐烂的插件。那将是理想的。但是,正如您所说,您有200个安装,这可能使您无法在短期内完成。所以你可能不得不排序这样的代码以“解决”任何问题。

为了在将来获得更好的答案,您可以考虑在您的问题中提供更多详细信息(例如,您试图预先设置WP安装的事实)。我认为这仍然是一个非常广泛的问题。提出特定的问题通常会更好。