我正在学习一个教程,其中一个用PHP编写的web应用程序,输入的黑名单空间(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这样的站点并尝试解码URLhttp://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
我希望看到的是一个空白,而不是黑盒子里的问号。

最佳答案

我怀疑这是因为字符编码之间的差异。
A0表示ISO-8859-1编码中的nbsp(也可能表示其他扩展的ASCII编码)。http://www.url-encode-decode.com处的页面似乎使用了UTF-8编码。
您的问题是在UTF-8中没有用A0表示的字符。UTF-8中的等效nbsp字符将由值C2A0表示。
解码http://192.168.2.15/sqli-labs/Less-26/?id=1'%C2%A0||%C2%A0'1将生成预期的nbsp字符。

关于html - 为什么nbsp在URL中不显示为nbsp,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/31159834/

10-09 14:08