AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 914847
Accepted
Jakov Sosic
Jakov Sosic
Asked: 2018-06-02 16:22:35 +0800 CST2018-06-02 16:22:35 +0800 CST 2018-06-02 16:22:35 +0800 CST

阻止 Apache 从 URI 中解码 PATH_INFO 的字符

  • 772

我想阻止 Apache从 URI解码%2B( +) 和%3D( )。=我需要那些未在 PATH_INFO 中解码的字符。

我已经通过使用%2F( /) 做到了这一点:

AllowEncodedSlashes NoDecode

但是,我找不到任何可以帮助我对其他编码字符执行相同操作的指令。这甚至可能吗?

php
  • 1 1 个回答
  • 1885 Views

1 个回答

  • Voted
  1. Best Answer
    MrWhite
    2018-06-02T17:05:19+08:002018-06-02T17:05:19+08:00

    您无法阻止 Apache 解码PATH_INFOApache 服务器变量中的那些 % 编码字符(PHP 稍后将其分配给$_SERVER['PATH_INFO']超全局,看似未更改)。

    该AllowEncodedSlashes指令是一种特殊情况。这确实是一个“安全功能”。默认情况下,%2FURL 路径部分中的编码斜杠 ( ) 会触发系统生成的404 响应。该AllowEncodedSlashes指令允许请求通过应用程序(该NoDecode选项仅在以后添加)。

    如果您想PATH_INFO在 PHP 中读取 %-encoded,请考虑使用不同的$_SERVER变量,例如$_SERVER['REQUEST_URI'],它不是 %-decoded,但这需要一些额外的解析。(请注意,PHP 超全局$_SERVER['REQUEST_URI']变量与同名的 Apache 服务器变量不同,后者是 % 解码的,如果 URL 被重写,它可能会完全引用不同的 URL!)

    但是,如果您想PATH_INFO使用 Apache 读取 % 编码(使用 mod_rewrite),那么请考虑THE_REQUEST改为解析服务器变量,该变量包含从客户端发送的整个请求标头。此变量未进行 % 解码。这可以分配给环境变量甚至是 URL 参数,并由 PHP 以这种方式读取。(请注意,QUERY_STRING服务器变量和相应$_SERVER['QUERY_STRING']的超全局变量不是 % 解码的,但 PHP 会解码数组中的各个参数值$_GET​​。)

    • 1

相关问题

  • 用户特定的 Php.ini 当 php 作为模块运行时?

  • 使 php mail() 函数在 ubuntu-server 上工作的步骤是什么?

  • Web 服务器和数据库服务器位于完全不同的位置

  • PHP 作为 CGI 还是 Apache 模块?

  • 通过 VPN 连接什么是远程服务器 IP?

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve