簡體   English   中英

為什么 nbsp 在 URL 中不顯示為 nbsp

[英]Why doesn't nbsp display as nbsp in the URL

我正在關注一個教程,其中一個用 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這樣的網站並嘗試解碼 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 .

我期待看到一個空白區域,而不是黑框內的問號。

我懷疑這是由於字符編碼之間的差異造成的。

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字符。

獨立於出現編碼錯誤的原因,嘗試用%20代替空格! 稍后你可以用 str_replace 空格

echo str_replace(" ", " ", $_GET["id"]);

也許這個網站上的腳本不能正常工作。 如果您在 PHP 代碼中使用它,它應該可以正常工作。

echo urldecode( '%A0' );

輸出:

 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM