是否有任何简单的方法可以检测是否安装了mod_security&只使用PHP启用?理想情况下,不执行任何exec()终端类型命令。
有些人建议使用apache_get_modules(),但这个特定的Web主机不允许它显示。其他用户也在此处提及:http://www.devcomments.com/apache_get_modules-solution-to130703.htm
答案 0 :(得分:4)
尝试使用apache_get_modules
function获取已加载模块的数组。如果该模块已加载但未在其中列出,您可能需要尝试使用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;