簡體   English   中英

鏈接 filter_input() 和 filter_var() 會導致問題嗎?

[英]Does chaining filter_input() and filter_var() cause the problem?

我有這個 url 用於測試

http://localhost:8000/2.php?site=https://google.com<script></script>

然后我正在清理“網站”:

$site = filter_input(INPUT_GET, 'site', FILTER_SANITIZE_URL);
var_dump($site); // string(35) "https://google.com"
echo "<br>";

獲取絕對安全的網址。 然后驗證它:

$siteValidation = filter_var($site, FILTER_VALIDATE_URL);
var_dump($siteValidation); // bool(false)

驗證失敗! 為什么?

在此處輸入圖像描述

如您在此處閱讀的,FILTER_SANITIZE_URL 不會從字符串中刪除 < 或 >。 這就是您看到打印的原因:

string(35) "https://google.com"

顯然,您看到的字符串不是 35 個字符長(通過瀏覽器中的開發人員工具檢查,您會看到“腳本”部分仍然存在)。

這就是為什么下一行無法驗證的原因。

暫無
暫無

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

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