mirror of
https://git.tt-rss.org/fox/tt-rss.git
synced 2025-10-15 21:11:14 +02:00
validate url: feed urlencoded() URL to filter_var() only
This commit is contained in:
parent
7c8bed0524
commit
c70e26db31
@ -64,13 +64,6 @@ class UrlHelper {
|
|||||||
if (!in_array(strtolower($tokens['scheme']), ['http', 'https']))
|
if (!in_array(strtolower($tokens['scheme']), ['http', 'https']))
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ($tokens['path']) {
|
|
||||||
$tokens['path'] = implode("/",
|
|
||||||
array_map("rawurlencode",
|
|
||||||
array_map("rawurldecode",
|
|
||||||
explode("/", $tokens['path']))));
|
|
||||||
}
|
|
||||||
|
|
||||||
//convert IDNA hostname to punycode if possible
|
//convert IDNA hostname to punycode if possible
|
||||||
if (function_exists("idn_to_ascii")) {
|
if (function_exists("idn_to_ascii")) {
|
||||||
if (mb_detect_encoding($tokens['host']) != 'ASCII') {
|
if (mb_detect_encoding($tokens['host']) != 'ASCII') {
|
||||||
@ -78,9 +71,21 @@ class UrlHelper {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$url = self::build_url($tokens);
|
// separate set of tokens with urlencoded 'path' because filter_var() rightfully fails on non-latin characters
|
||||||
|
// (used for validation only, we actually request the original URL, in case of urlencode breaking it)
|
||||||
|
$tokens_filter_var = $tokens;
|
||||||
|
|
||||||
if (filter_var($url, FILTER_VALIDATE_URL) === false)
|
if ($tokens['path']) {
|
||||||
|
$tokens_filter_var['path'] = implode("/",
|
||||||
|
array_map("rawurlencode",
|
||||||
|
array_map("rawurldecode",
|
||||||
|
explode("/", $tokens['path']))));
|
||||||
|
}
|
||||||
|
|
||||||
|
$url = self::build_url($tokens);
|
||||||
|
$url_filter_var = self::build_url($tokens_filter_var);
|
||||||
|
|
||||||
|
if (filter_var($url_filter_var, FILTER_VALIDATE_URL) === false)
|
||||||
return false;
|
return false;
|
||||||
|
|
||||||
if ($extended_filtering) {
|
if ($extended_filtering) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user