检测是否使用PHP安装了Mod_Security?

时间:2010-07-05 22:34:54

标签: php mod-security

是否有任何简单的方法可以检测是否安装了mod_security&只使用PHP启用?理想情况下,不执行任何exec()终端类型命令。

有些人建议使用apache_get_modules(),但这个特定的Web主机不允许它显示。其他用户也在此处提及:http://www.devcomments.com/apache_get_modules-solution-to130703.htm

4 个答案:

答案 0 :(得分:4)

尝试使用apache_get_modulesfunction获取已加载模块的数组。如果该模块已加载但未在其中列出,您可能需要尝试使用phpinfo(INFO_MODULES)代替phpinfo

ob_start();
phpinfo(INFO_MODULES);
$contents = ob_get_clean();
$moduleAvailable = strpos($contents, 'mod_security') !== false;

答案 1 :(得分:3)

您可以创建一个test.php文件并使用..

<?php phpinfo(); ?>

看看apache2handler,然后看看:加载模块......就像这样......

http://gyazo.com/bcba303469f23671f7213e1478788cbd.png

-Mike

答案 2 :(得分:2)

抓住吸管。

尝试让您的脚本向自己发送请求(通过file_get_contents或cURL扩展名),这将导致mod_security出现问题。如果它返回403(或任何mod_security的默认响应),这应该是足够的信息让你继续......

答案 3 :(得分:0)

您可以搜索get_loaded_extensions()函数并使用array_intersect(),该函数将在数组中返回匹配值,如果找不到任何匹配项,则返回空数组。

$modSecurity = !empty(array_intersect(array_map('strtolower', get_loaded_extensions()), array('mod_security', 'mod security'))) ? true : false;