找回密码
 新建账号

Missing boundary in multipart/form-data POST data in Unknown on line 0

[复制链接]
 楼主| 大郎 发表于 2026-7-17 03:32 | 显示全部楼层 |阅读模式
[13-Jul-2026 15:52:06 Asia/Shanghai] PHP Warning:  PHP Request Startup: Missing boundary in multipart/form-data POST data in Unknown on line 0

最近看 PHP 错误日志,发现了这么一条记录。Unknown on line 0 说明 PHP 脚本还没有来得及执行这个错误就发生了。出现这个错误,是因为客户端发送了 Content-Type: multipart/form-data 这个请求头,但没有声明 boundary ,这不符合规范。发送这样的请求,有可能确实是忘记了或者写错了,也有可能是在嗅探服务器漏洞。

服务器记录了相关请求的信息。
  1. [2026-07-13T15:52:06+08:00] 51.158.233.55 200 POST HTTP/2.0 TLSv1.3 https qsez.org / 1784 10272 0.316 - "Go-http-client/2.0"
复制代码
  1. [2026-07-13T15:52:07+08:00] 51.158.233.55 499 POST HTTP/2.0 TLSv1.3 https qsez.org / 11 0 0.000 - "Go-http-client/2.0"
复制代码
解决方法,是配置 nginx 拦截没有 boundary 的 multipart/form-data 请求。
第一步,在 nginx http 配置块添加以下配置
  1. map $http_content_type $is_bad_multipart_request {
  2.     "~*^multipart/form-data(?!.*;\s*boundary=\S)" 1;
  3.     default 0;
  4. }
复制代码
第二步,在 server 配置块中添加以下配置。如果有很多 server,可以保存为文件在每个 server 里面 include 这个文件。
  1. if ($is_bad_multipart_request) {
  2.     return 400;
  3. }
复制代码
第三步,重新启动 nginx。
第四步,使用以下命令测试是否生效。
  1. curl "--url" "https://qsez.org/" "--request" "POST" "--header" "Content-Type: multipart/form-data" --data "domain=wuxiancheng.cn"
复制代码
记得把 --url 参数后面的网址改成自己的网站链接。
现在服务器会以 400 状态响应,PHP 不会再报错,因为请求根本没有交给 PHP 处理。

手机版|轻松e站

GMT+8, 2026-7-17 05:40

快速回复 返回顶部 返回列表