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