You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何URL中的%00 NULL是无效字符且会导致浏览器崩溃?

URL里的NULL字符:为啥无效、编码后算不算合法、解析时会咋样?

为啥NULL字符在URL里是无效的?

URL的核心规范(比如RFC 3986)直接把NULL字符(ASCII 0)划成了禁止出现的控制字符,原因很实在:

  • 绝大多数网络服务、服务器程序的字符串处理逻辑都是C风格的——碰到NULL就认为字符串结束了,这会导致URL被意外截断,要么引发功能错误,要么被用来搞安全绕过(比如截断恶意路径)。
  • URL设计出来就是要传可识别的有效数据,控制字符本来就不属于这个范畴,加进来只会破坏兼容性和可读性。

用%00编码的NULL字符,算不算合法URL内容?

能编码不代表合法。%00只是把NULL字符转成了URL能识别的十六进制格式,但规范依然禁止在URL里放这种控制字符的转义形式。现在大部分浏览器、服务器要么直接拒绝带%00的URL,要么自动把它后面的内容全砍掉。

碰到带NULL的URL,解析时会咋样?

看你给的两个例子:

  • 示例1:https://a4%00:几乎所有处理逻辑都会把它当成https://a4,因为%00对应的NULL字符触发了终止逻辑,后面没内容就直接停在a4这里。
  • 示例2:https://a45xxc%00fbbg:解析到%00就停了,实际生效的URL是https://a45xxc,后面的fbbg直接被忽略。

当然也有例外,有些严格的服务器会直接返回400错误,根本不处理带%00的请求,不会给你截断的机会。

内容的提问来源于stack exchange,提问作者penguin99

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 15:45:43