我用它来验证网址:
if(!filter_var($website, FILTER_VALIDATE_URL)) {
// invalid url
} else
//url valid
这样安全吗? 看完之后:http://www.d-mueller.de/blog/why-url-validation-with-filter_var-might-not-be-a-good-idea/我恐怕没有。
所提供的解决方案是否安全?:
function validate_url($url)
{
$url = trim($url);
return ((strpos($url, "http://") === 0 || strpos($url, "https://") === 0) &&
filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED | FILTER_FLAG_HOST_REQUIRED) !== false);
}
答案 0 :(得分:0)
文档没有说明这一点,但返回值是URL的清理副本。
即
<?php
echo filter_var('http://example.com/exploit.html?<script>alert(1);</script>', FILTER_VALIDATE_URL);
//http://example.com/exploit.html?
因此,如果您使用filter_var()
的返回值,则比使用提供给filter_var()
的网址更安全。