什么是php伪协议
在 PHP 中,”伪协议”是一种特殊的语法,用于访问不同的资源或执行特定的操作。这些伪协议以 php://
开头,后面跟着特定的指示符或参数,以实现不同的功能。这些伪协议提供了一种方便的方式来处理各种输入输出操作,而不必依赖于实际的文件或网络资源。
使用伪协议的函数
1. file_get_contents()
- 用途:读取文件或流内容。
- 常见伪协议:
file://
:访问本地文件(默认协议)。php://input
:读取原始 HTTP 请求体。php://filter
:对资源进行过滤处理。
2. fopen()
- 用途:打开文件或流。
- 常见伪协议
php://temp
或php://memory
:临时存储数据。data://
:处理 Base64 或 URL 编码数据。
3. include
/ require
- 用途:包含并执行 PHP 文件。
- 常见伪协议:
php://filter
:用于 LFI(本地文件包含)攻击或绕过限制。data://
:直接执行编码后的代码。
4. file()
- 用途:将文件读取到数组中。
- 常见伪协议:
php://filter
:过滤文件内容。
5. readfile()
- 用途:输出文件内容。
- 常见伪协议:
php://output
:直接输出到缓冲区。
6. copy()
- 用途:复制文件或流。
- 常见伪协议:
php://input
:读取 HTTP 请求体并保存到文件。
7. stream_get_contents()
/ fread()
- 用途:读取流内容。
- 常见伪协议:
php://memory
或php://temp
:操作内存或临时流。
8. file_put_contents()
用途:写入数据到文件或流。
常见伪协议:
php://output
:直接输出内容。
1
2file_put_contents('php://output', 'Hello World');
php支持的伪协议
1 | 1 file:// — 访问本地文件系统 |
常用伪协议
php://filter
简单通俗的说,这是一个中间件,在读入或写入数据的时候对数据进行处理后输出的一个过程。
php://filter可以获取指定文件源码。当它与包含函数结合时,php://filter流会被当作php文件执行。所以我们一般对其进行编码,让其不执行。从而导致 任意文件读取。
例子:php://filter/read=convert.base64-encode/resource=index.php
协议参数