为什么 nbsp 在 URL 中不显示为 nbsp
Why doesn't nbsp display as nbsp in the URL
我正在学习一个用 PHP 编写的 Web 应用程序的教程,黑名单 space 来自输入('id' 参数)。任务是添加其他字符,这基本上绕过了这个黑名单,但仍然被后端的 MySQL 数据库解释。有效的是 URL 像这样构造 -
http://192.168.2.15/sqli-labs/Less-26/?id=1'%A0||%A0'1
现在,我的问题很简单,如果“%A0”表示 NBSP,那么为什么当我访问像 http://www.url-encode-decode.com 这样的网站并尝试解码 URL http://192.168.2.15/sqli-labs/Less-26/?id=1'%A0||%A0'1
,它被解码为 http://192.168.2.15/sqli-labs/Less-26/?id=1'�||�'1
.
我原以为看到的是空白 space,而不是黑框内的问号。
独立于编码错误的原因,尝试 %20 作为空格的替代品!
稍后您可以 str_replace 使用
的空格
echo str_replace(" ", " ", $_GET["id"]);
可能是本站脚本运行不正常。如果您在 PHP 代码中使用它,它应该可以正常工作。
echo urldecode( '%A0' );
输出:
我怀疑这是由于字符编码不同造成的。
值 A0
表示 ISO-8859-1 encoding (and probably in other extended-ASCII encodings too). The page at http://www.url-encode-decode.com appears to use the UTF-8 编码中的 nbsp
。
你的问题是UTF-8中没有A0
表示的字符。 UTF-8 中等效的 nbsp
字符将由值 C2A0
.
表示
解码 http://192.168.2.15/sqli-labs/Less-26/?id=1'%C2%A0||%C2%A0'1
将产生您期望的 nbsp
个字符。
我正在学习一个用 PHP 编写的 Web 应用程序的教程,黑名单 space 来自输入('id' 参数)。任务是添加其他字符,这基本上绕过了这个黑名单,但仍然被后端的 MySQL 数据库解释。有效的是 URL 像这样构造 -
http://192.168.2.15/sqli-labs/Less-26/?id=1'%A0||%A0'1
现在,我的问题很简单,如果“%A0”表示 NBSP,那么为什么当我访问像 http://www.url-encode-decode.com 这样的网站并尝试解码 URL http://192.168.2.15/sqli-labs/Less-26/?id=1'%A0||%A0'1
,它被解码为 http://192.168.2.15/sqli-labs/Less-26/?id=1'�||�'1
.
我原以为看到的是空白 space,而不是黑框内的问号。
独立于编码错误的原因,尝试 %20 作为空格的替代品! 稍后您可以 str_replace 使用
的空格echo str_replace(" ", " ", $_GET["id"]);
可能是本站脚本运行不正常。如果您在 PHP 代码中使用它,它应该可以正常工作。
echo urldecode( '%A0' );
输出:
我怀疑这是由于字符编码不同造成的。
值 A0
表示 ISO-8859-1 encoding (and probably in other extended-ASCII encodings too). The page at http://www.url-encode-decode.com appears to use the UTF-8 编码中的 nbsp
。
你的问题是UTF-8中没有A0
表示的字符。 UTF-8 中等效的 nbsp
字符将由值 C2A0
.
解码 http://192.168.2.15/sqli-labs/Less-26/?id=1'%C2%A0||%C2%A0'1
将产生您期望的 nbsp
个字符。