+
+ * Fix open redirect security issue (CWE-601).
+ You have to white-list allowed default URLs now.
+
2012-08-27 Christian Weiske <cweiske@bogo>
* Add support for OpenIDs
* to true, the images will always be regenerated.
*/
$forceUpdate = false;
+
+/**
+ * URL prefixes that may be used as "default" parameter.
+ *
+ * Taken from https://git.linux-kernel.at/oliver/ivatar/-/blob/master/config.py
+ */
+$trustedDefaultUrls = [
+ 'http://gravatar.com/avatar/',
+ 'http://www.planet-libre.org/themes/planetlibre/images/',
+ 'https://avatars.dicebear.com/api/',
+ 'https://badges.fedoraproject.org/static/img/',
+ 'https://gravatar.com/avatar/',
+ 'https://secure.gravatar.com/avatar/',
+ 'https://ui-avatars.com/api/',
+ 'https://www.azuracast.com/img/',
+];
?>
//url
$defaultMode = 'redirect';
$default = $_GET['default'];
- //FIXME: validate?
+
+ $allowed = false;
+ foreach ($trustedDefaultUrls ?? [] as $urlPrefix) {
+ if (substr($default, 0, strlen($urlPrefix)) == $urlPrefix) {
+ $allowed = true;
+ break;
+ }
+ }
+ if (!$allowed) {
+ header('X-Info: default parameter URL not allowed');
+ $defaultMode = 'local';
+ $default = 'default.png';
+ }
}
}
header('Content-Length:' . $stat['size']);
readfile($imgFile);
-?>
\ No newline at end of file
+?>