php://input(phpinput漏洞利用)
## php://input 简介`php://input` 是一个只读的 PHP 超全局变量,允许访问请求的原始 HTTP 请求体数据。它对于处理非表单提交的数据非常有用,例如:-
JSON 数据:
现在非常流行的 API 交互格式。 -
XML 数据:
用于 Web 服务和数据交换。 -
自定义数据格式:
根据您的应用程序需求。### php://input 与 $_POST 的区别-
$_POST:
- 仅处理 `application/x-www-form-urlencoded` 或 `multipart/form-data` 编码的表单数据。- 会对数据进行预处理,例如将 `magic_quotes_gpc` 设置为 `on` 时对数据进行转义。-
php://input:
- 可以访问任何类型的请求体数据,不受编码格式限制。- 提供原始数据,不进行任何预处理。### 使用 php://input 获取请求体数据使用 `file_get_contents()` 函数可以方便地获取 `php://input` 中的数据:```php $raw_data = file_get_contents("php://input"); ```### 处理不同类型的请求体数据1.
JSON 数据:
```php $json_data = json_decode(file_get_contents("php://input"), true); // 访问 JSON 数据 echo $json_data['name']; ```2.
XML 数据:
```php $xml_data = simplexml_load_string(file_get_contents("php://input"));// 访问 XML 数据 echo $xml_data->name; ```### 注意事项- 只能读取一次 `php://input` 流。如果需要多次使用,请将数据存储到变量中。 - 确保您的服务器配置允许处理大型请求体数据。### 总结`php://input` 为访问和处理 HTTP 请求体数据提供了强大的工具,尤其是在处理非表单提交的数据时。通过理解 `php://input` 的工作原理和使用方法,您可以更有效地构建处理各种数据格式的 Web 应用程序和 API。