我正在寻找一种方法来检测Allow override
vhost 设置是否导致 .htaccess 文件被忽略。
现在我正在测试我可以在 .htaccess 中设置的一些 PHP 设置的值,但是这种检测还不够好(因为这些值也可以在 php.ini 中进行更改)。
最终目标是防止应用程序使用被忽略的 .htaccess 文件运行,原因如下:
- 安全;
- 异常预防;
- 调试(到目前为止它从来都不是显而易见的)。
是否有一种安全且有保证的方法来检测 .htaccess 文件是否有效?
假设 .htaccess 本身没有被锁定以排除某些覆盖,您可以设置一个环境变量:
SetEnv HTACCESS_WORKING here_i_am
并在 PHP 中检查:
if (isset($_ENV['HTACCESS_WORKING']) && ($_ENV['HTACESS_WORKING'] === "here_i_am")) {
...
}
您可以合理地确定它正在工作。
如果您有一个独立于您的应用程序的测试脚本,是的。让“安全测试人员”向自己发起一个 HTTP 请求。您可以将您发送的内容(作为客户端)与您返回的内容(接收请求时)进行比较。您将需要脚本客户端和服务器端之间的某种通信机制,这可能是一个不同的 PHP 进程。会话使这很容易。这将允许您查看重写规则或任何内容。