strengthen assertHttpsUrl
This commit is contained in:
1 parent
9d268c967e
commit
2e3859795f
1 file changed
+11
@@ -535,11 +535,22 @@ class CalendarController extends Controller
|
|||||||
|
|
||||||
private function assertHttpsUrl(string $value, string $message): void
|
private function assertHttpsUrl(string $value, string $message): void
|
||||||
{
|
{
|
||||||
|
/*
|
||||||
|
* filter_var() plus the regex reject whitespace, backslashes
|
||||||
|
* and non-ASCII characters: browsers may display those
|
||||||
|
* differently than PHP parses them, e.g. IDN homographs.
|
||||||
|
*/
|
||||||
|
if (filter_var($value, FILTER_VALIDATE_URL) === false
|
||||||
|
|| preg_match('/[^\x21-\x7E]|\\\\/', $value) === 1) {
|
||||||
|
throw new \InvalidArgumentException($message);
|
||||||
|
}
|
||||||
|
|
||||||
$parts = parse_url($value);
|
$parts = parse_url($value);
|
||||||
|
|
||||||
$valid = $parts !== false
|
$valid = $parts !== false
|
||||||
&& isset($parts['scheme'], $parts['host'])
|
&& isset($parts['scheme'], $parts['host'])
|
||||||
&& !isset($parts['user'])
|
&& !isset($parts['user'])
|
||||||
|
&& !isset($parts['pass'])
|
||||||
&& strtolower($parts['scheme']) === 'https'
|
&& strtolower($parts['scheme']) === 'https'
|
||||||
&& $parts['host'] !== '';
|
&& $parts['host'] !== '';
|
||||||
|
|
||||||
|
|||||||
Reference in new issue
Block a user