在php 5.5.1/apache 2.4.6中忽略了带下划线的标题名称

Pav*_*dic 13 php apache http-headers

升级到php 5.5.1和apache 2.4.6后,检查某些标题现在已经破坏(具体来说,检查HTTP_X_REQUESTED_WITH).

通过进一步的测试,我注意到任何包含下划线的自定义标头都被忽略(我的意思是它不会出现在PHP的$_SERVER数组中).因此,如果我添加一个名为的标题my-header,它将变为可用$_SERVER['HTTP_MY_HEADER'],但如果我尝试添加标题my_header,则它不可用$_SERVER.

Pav*_*dic 19

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

标头到环境变量的转换比以前更严格,以通过标头注入缓解一些可能的跨站点脚本攻击.现在以静默方式删除包含无效字符(包括下划线)的标头.

  • 你如何解决这个"功能"? (3认同)
  • 如果(像我一样)你坚持使用无法修改的旧接口,文档解释了一个解决方法:http://httpd.apache.org/docs/trunk/env.html#fixheader (2认同)