1
這裏我很困惑,爲什麼FILTER_SANITIZE_URL
在var_dump
返回一個錯誤的字符串長度,並沒有刪除標籤,如。這發生在所有filter_var預定義的過濾器常量中。這是一個錯誤還是背後有邏輯?var_dump filter_var FILTER_SANITIZE_URL返回行爲
我使用PHP 5.4,因爲我必須,我們的服務器上運行它。讓我示範。 我有這個網址:
$url = 'http://www.example.com/index.php?a=1&b=2&c=3&d=some%20string';
,如果我清理它和的var_dump它:
var_dump(filter_var($url, FILTER_SANITIZE_URL));
則回覆:
string(60) "http://www.example.com/index.php?a=1&b=2&c=3&d=some%20string"
現在如果我把惡意代碼URL
$url = 'http://www.example.com/index.php?
<script>
function myFunction() {
var x = "<?php echo $var; ?>";
alert(x);
}
</script>a=1&b=2&c=3&d=some%20string';
s AME代碼:var_dump(filter_var($url, FILTER_SANITIZE_URL));
將返回此:
string(132) "http://www.example.com/index.php?a=1&b=2&c=3&d=some%20string"
注重類型和返回變種的長度。比前面多了72個字符,但顯然字符串仍然是60個字符。爲什麼var_dump或filter_var有這樣的行爲?如果它是一個錯誤,這已被修復。當我記錄這些類型的數據時,我需要這個函數來返回確切數量的字符。
FILTER_SANITIZE_URL移除所有不必要的字符從URL,包括空格,如果u檢查視圖源它顯示 – devpro
@devpro ...我知道...但爲什麼它仍然返回var_dump上的132個字符? –
因爲