链接 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>";
绝对安全url。
然后验证它:
$siteValidation = filter_var($site, FILTER_VALIDATE_URL);
var_dump($siteValidation); // bool(false)
验证失败!为什么?
如您所见 here,FILTER_SANITIZE_URL 不会从字符串中删除 < 或 >。这就是为什么你看到打印:
string(35) "https://google.com"
显然您看到的字符串不是 35 个字符长(通过浏览器中的开发人员工具检查,您会看到“脚本”部分仍然存在)。
这就是下一行无法验证的原因。
我有这个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>";
绝对安全url。 然后验证它:
$siteValidation = filter_var($site, FILTER_VALIDATE_URL);
var_dump($siteValidation); // bool(false)
验证失败!为什么?
如您所见 here,FILTER_SANITIZE_URL 不会从字符串中删除 < 或 >。这就是为什么你看到打印:
string(35) "https://google.com"
显然您看到的字符串不是 35 个字符长(通过浏览器中的开发人员工具检查,您会看到“脚本”部分仍然存在)。
这就是下一行无法验证的原因。