在PHP 5.5.1 / apache 2.4.6中,带有下划线的标头名称被忽略

升级到php 5.5.1和apache 2.4.6之后,现在检查某些头文件(特别是检查HTTP_X_REQUESTED_WITH )。

通过进一步的testing,我发现任何包含下划线的自定义标题都会被忽略(我的意思是它不会显示在PHP的$_SERVER数组中)。 所以,如果我添加一个名为my-header ,它将变成$_SERVER['HTTP_MY_HEADER'] ,但是如果我尝试添加一个头文件my_header ,它在$_SERVER不可用。

这是apache 2.4中记录的功能。 请参阅httpd.apache.org/docs/trunk/new_features_2_4.html

头文件到环境变量的转换比以前更加严格,通过头文件注入来缓解一些可能的跨站点脚本攻击。 包含无效字符(包括下划线)的标题现在被静默放置。