- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
使用 php,我可以在 $_SERVER 数组中看到索引“REDIRECT_STATUS”,但 php.net 没有提及它。我有一个抛出 404 的自定义错误页面,但“REDIRECT_STATUS”仍然是 200。那么状态代码究竟指的是什么?
最佳答案
php-src code建议 documentation link , 即
<p>For more information as to <i>why</i> this behaviour exists,
see the <a href=\"http://php.net/security.cgi-bin\">\
manual page for CGI security</a>.</p>\n\
阅读有关 CGI 安全性的信息。使用 REDIRECT_STATUS
变量 - 它不是 HTTP header ,而是一个从 Web 服务器传递到 CGI 程序的变量,在本例中是 php-cgi 或 php-fpm 进程 - 你告诉 php-通过直接访问这些 CGI 脚本,cgi 或 php-fpm 处理请求已由 Web 服务器以受控方式处理,而不是以其他方式处理。
过去,您将 Web 服务器配置为处理特殊目录中的 CGI 二进制文件 - 类似于 $DOCROOT/cgi-bin
- 并使所有 CGI 脚本可通过某些 URL http:/访问/SERVERNAME/cgi-bin/
.
现在,如果您通过这样的(直接)URL http://SERVERNAME/cgi-bin/php-cgi/PATH_TO_PHP_SCRIPT
调用 PHP CGI 程序,php-cgi 的默认行为是处理文档 /PATH_TO_PHP_SCRIPT
从而可能绕过 Web 服务器访问控制。 /PATH_TO_PHP_SCRIPT
文档将被处理,尽管服务器可能不允许/PATH_TO_PHP_SCRIPT,因为请求已经离开 Web 服务器并进入 PHP 进程。在 php 的帮助下,这样的服务器会泄漏信息,您将需要对所有 PHP 脚本的另一个访问检查层。
要停止此行为,您可以将 PHP-CGI 程序配置为仅处理设置了 REDIRECT_STATUS
header 的请求,外部客户端不可能在直接请求中设置该 header 。只有 web 服务器——在客户端和 php 之间——可以设置这个头,并且 web 服务器建议一个 HTTP 状态——比如 200、404、403 或你喜欢的——并允许 PHP 处理这个状态。但是,即使此 header 的纯粹存在也会通知 PHP 进程,该请求已由 Web 服务器以常规方式处理。
意见:防止这种用法的更好方法是,将 Web 服务器配置为禁止通过默认/cgi-bin/路径直接调用 PHP CGI。
关于php - 什么是 php $_SERVER ['REDIRECT_STATUS' ]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24378472/
$_SERVER['REDIRECT_STATUS'] 的值为 '44' 是什么意思? 为什么 $_SERVER['REDIRECT_URL'] 有一个 "/500.shtml" 值? 我没有使用 m
我有以下 htaccess 重写规则。防止循环的单规则条件最初是这样写的: RewriteCond %{ENV:REDIRECT_STATUS} ^. 它曾经工作得很好,直到它突然停止工作,导致 Ap
使用 php,我可以在 $_SERVER 数组中看到索引“REDIRECT_STATUS”,但 php.net 没有提及它。我有一个抛出 404 的自定义错误页面,但“REDIRECT_STATUS”
使用 .htaccess 和 ErrorDocument 404/error.php,如果访问无效的 url 例如:http://example/css/invalid-file .css:
当从 Apache 迁移到 Nginx 时,.htaccess 文件中的某些规则必须“翻译”到 Nginx 配置文件中。一个我似乎无法解决的问题,一个例子是最简单的解释方式: 请求 http://ww
我是一名优秀的程序员,十分优秀!