diff --git a/core/factory/settings.php b/core/factory/settings.php index 07ca7228f9..5c15dd76dc 100644 --- a/core/factory/settings.php +++ b/core/factory/settings.php @@ -54,8 +54,9 @@ 'use_editor' => 1, 'editor_css_path' => '', 'filemanager_path' => '[(base_path)]', - 'upload_files' => 'bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff,fla,flv,swf,aac,au,avi,css,cache,doc,docx,gz,gzip,htaccess,htm,html,js,mp3,mp4,mpeg,mpg,ods,odp,odt,pdf,ppt,pptx,rar,tar,tgz,txt,wav,wmv,xls,xlsx,xml,z,zip,JPG,JPEG,PNG,GIF,svg,tpl,webp,avif', - 'upload_images' => 'bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff,svg,webp,avif', + // no svg (scriptable, same-origin), htaccess or flash; defaults only reach new installs + 'upload_files' => 'bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff,aac,au,avi,css,cache,doc,docx,gz,gzip,htm,html,js,mp3,mp4,mpeg,mpg,ods,odp,odt,pdf,ppt,pptx,rar,tar,tgz,txt,wav,wmv,xls,xlsx,xml,z,zip,JPG,JPEG,PNG,GIF,tpl,webp,avif', + 'upload_images' => 'bmp,ico,gif,jpeg,jpg,png,psd,tif,tiff,webp,avif', 'upload_media' => 'au,avi,mp3,mp4,mpeg,mpg,wav,wmv', 'upload_maxsize' => '5000000', 'new_file_permissions' => '0644', diff --git a/core/functions/actions/files.php b/core/functions/actions/files.php index 3add29b8a5..d87bfcb12a 100644 --- a/core/functions/actions/files.php +++ b/core/functions/actions/files.php @@ -813,7 +813,7 @@ function checkToken() $token = false; } - if (isset($_SESSION['token']) && !empty($_SESSION['token']) && $_SESSION['token'] === $token) { + if (is_string($token) && isset($_SESSION['token']) && !empty($_SESSION['token']) && hash_equals($_SESSION['token'], $token)) { $rs = true; } else { $rs = false; @@ -830,7 +830,7 @@ function checkToken() */ function makeToken() { - $newToken = uniqid('', true); + $newToken = bin2hex(random_bytes(16)); // uniqid() is clock-derived, not random $_SESSION['token'] = $newToken; return $newToken; diff --git a/core/src/Controllers/Users/EditOrNewUser.php b/core/src/Controllers/Users/EditOrNewUser.php index 38f6950ef1..0f50a961c4 100644 --- a/core/src/Controllers/Users/EditOrNewUser.php +++ b/core/src/Controllers/Users/EditOrNewUser.php @@ -157,7 +157,7 @@ public function process(): bool if ($userData['stay'] != '') { $a = ($userData['stay'] == '2') ? "88&id={$user->getKey()}" : "87"; - $this->parameters['url'] = "index.php?a={$a}&r=2&stay=" . $userData['stay']; + $this->parameters['url'] = "index.php?a={$a}&r=2&stay=" . (int)$userData['stay']; } else { $this->parameters['url'] = "index.php?a=88&id={$user->getKey()}"; } diff --git a/core/src/Core.php b/core/src/Core.php index f7dd4269fa..c2e1388a98 100644 --- a/core/src/Core.php +++ b/core/src/Core.php @@ -3595,7 +3595,7 @@ public function getChildIds($id, $depth = 10, $children = []) /** * Displays a javascript alert message in the web browser and quit * - * @param string $msg Message to show + * @param string $msg Message to show, as plain text * @param string $url URL to redirect to */ public function webAlertAndQuit($msg, $url = '') @@ -3648,7 +3648,7 @@ function __alertQuit() {
-" . $msg . '
+" . htmlspecialchars((string)$msg, ENT_QUOTES, $manager_charset) . '