如何识别PHP中的请求页面?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (39)

有没有简单的方法来初步确定了文件的处理请求,忽略得到的参数和操作(至少基本)的映射,比如//index.php

理想情况下,我正在寻找的是类似的东西$_SERVER['REQUEST_URI'],除非它返回相同的值,而不管get参数,并且该值是请求的文件,而不是URI,也不是当前正在执行的文件($_SERVER['PHP_SELF'])。换句话说,一个$_SERVER['REQUESTED_FILE']或某个东西。我没有见过这样的事情。它是否存在,还是我需要手动编写一些东西?

提问于
用户回答回答于

我决定自己测试一下。该$_SERVER['SCRIPT_NAME']变量提供所请求文件的路径,即使它是索引文件,也不会获取参数或其他内容。PHP文档指出这包含文件的路径,但它似乎与文档根相关,就像PHP_SELF,但没有安全漏洞。

这是我用来测试的代码:https//gist.github.com/dimo414/5484870

请求时的输出example.com/?foo=bar

__FILE__:               /var/www/index.php
PHP_SELF:               /index.php
SCRIPT_NAME:            /index.php
REQUEST_URI:            /?foo=bar
parse_url(REQUEST_URI): /


__FILE__:               /var/www/pathtest.php
PHP_SELF:               /index.php
SCRIPT_NAME:            /index.php
REQUEST_URI:            /?foo=bar
parse_url(REQUEST_URI): /

请求时输出example.com/index.php/<strong>XSS</strong>

__FILE__:               /var/www/index.php
PHP_SELF:               /index.php/XSS # note the XSS exploit (this is bold in browser)
SCRIPT_NAME:            /index.php     # No exploit here
REQUEST_URI:            /index.php/%3Cstrong%3EXSS%3C/strong%3E
parse_url(REQUEST_URI): /index.php/%3Cstrong%3EXSS%3C/strong%3E


__FILE__:               /var/www/pathtest.php
PHP_SELF:               /index.php/XSS
SCRIPT_NAME:            /index.php
REQUEST_URI:            /index.php/%3Cstrong%3EXSS%3C/strong%3E
parse_url(REQUEST_URI): /index.php/%3Cstrong%3EXSS%3C/strong%3E

正如所看到的,$_SERVER['SCRIPT_NAME']始终将最初处理该请求的文件(即URL中的文件)回送,而不存在任何XSS风险。

用户回答回答于

扫码关注云+社区