[英]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.