Skip to content

Commit 402b013

Browse files
committed
Improve url filtering:
- Require urls to have a scheme and host - Allow select ip addresses
1 parent b52e466 commit 402b013

File tree

1 file changed

+9
-5
lines changed

1 file changed

+9
-5
lines changed

SECURITY.md

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -21,14 +21,18 @@ echo $curl->response;
2121
Safer:
2222

2323
```php
24-
function is_website_url($url, $allowed_schemes = array('http', 'https')) {
25-
$validate_url = !(filter_var($url, FILTER_VALIDATE_URL) === false);
26-
$scheme = parse_url($url, PHP_URL_SCHEME);
27-
return $validate_url && in_array($scheme, $allowed_schemes, true);
24+
function is_allowed_url($url, $allowed_url_schemes = array('http', 'https')) {
25+
$valid_url = filter_var($url, FILTER_VALIDATE_URL, FILTER_FLAG_SCHEME_REQUIRED | FILTER_FLAG_HOST_REQUIRED) !== false;
26+
if ($valid_url) {
27+
$scheme = parse_url($url, PHP_URL_SCHEME);
28+
return in_array($scheme, $allowed_url_schemes, true);
29+
}
30+
$valid_ip = filter_var($url, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE) !== false;
31+
return $valid_ip;
2832
}
2933

3034
$url = $_GET['url'];
31-
if (!is_website_url($url)) {
35+
if (!is_allowed_url($url)) {
3236
die('Unsafe url detected.');
3337
}
3438
```

0 commit comments

Comments
 (0)