diff --git a/DeskHub-Webseite/.htaccess b/DeskHub-Webseite/.htaccess index d16f3425..ed301e59 100644 --- a/DeskHub-Webseite/.htaccess +++ b/DeskHub-Webseite/.htaccess @@ -20,6 +20,20 @@ Header always set X-Content-Type-Options "nosniff" # Funktioniert mit Apache (mod_rewrite/mod_authz aktiv). Bei nginx siehe README.md. RewriteEngine On + +# Den Header "Authorization" (Anmeldung der Windows- und Android-App) an PHP weiterreichen. Ohne diese Regeln entfernen Apache mit +# PHP-FPM/FastCGI (z. B. Plesk) ihn, und die Apps melden "Ein gültiges Bearer-Token ist erforderlich". +RewriteCond %{HTTP:Authorization} . +RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] + + SetEnvIfNoCase ^Authorization$ "(.+)" HTTP_AUTHORIZATION=$1 + + + = 2.4.13> + CGIPassAuth On + + + RewriteCond %{REQUEST_URI} ^/(includes|config|database|cron)/ [NC] RewriteRule ^ - [F,L] diff --git a/DeskHub-Webseite/forgot_password.php b/DeskHub-Webseite/forgot_password.php index e55c2d77..28fae039 100644 --- a/DeskHub-Webseite/forgot_password.php +++ b/DeskHub-Webseite/forgot_password.php @@ -20,7 +20,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { // Gleiche Fehlermeldung – verrät nicht ob die E-Mail bekannt ist $errors[] = 'Zu viele Anfragen. Bitte versuchen Sie es in einigen Minuten erneut.'; } else { - $stmt = get_db()->prepare('SELECT * FROM users WHERE email = ?'); + $stmt = get_db()->prepare('SELECT * FROM users WHERE LOWER(email) = LOWER(?)'); $stmt->execute([$email]); $user = $stmt->fetch(); @@ -57,7 +57,7 @@ require __DIR__ . '/includes/header_customer.php';
- +
diff --git a/DeskHub-Webseite/login.php b/DeskHub-Webseite/login.php index 5831080c..48be92aa 100644 --- a/DeskHub-Webseite/login.php +++ b/DeskHub-Webseite/login.php @@ -12,14 +12,14 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') { if (!rate_limit_check('login_attempt', client_ip(), 10, 15)) { $errors[] = 'Zu viele Anmeldeversuche. Bitte versuchen Sie es in einigen Minuten erneut.'; - } elseif ($email && !rate_limit_check('login_email', $email, 5, 15)) { + } elseif ($email && !rate_limit_check('login_email', strtolower($email), 5, 15)) { $errors[] = 'Zu viele Anmeldeversuche für dieses Konto. Bitte warten Sie einige Minuten.'; } else { - $stmt = get_db()->prepare('SELECT * FROM users WHERE email = ?'); + $stmt = get_db()->prepare('SELECT * FROM users WHERE LOWER(email) = LOWER(?)'); $stmt->execute([$email]); $user = $stmt->fetch(); if ($user && password_verify($pass, $user['password_hash'])) { - rate_limit_reset('login_email', $email); + rate_limit_reset('login_email', strtolower($email)); customer_login($user); redirect('/home.php'); } @@ -53,8 +53,7 @@ $imprintHtml = get_setting('footer_imprint_html', ''); - - +