我正在学习一个教程,其中一个用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/