Security: OAuth-state, Verschlüsselung, Session-Timeout & weitere Härtung
- m365_callback.php: OAuth-state-Validierung gegen Login-CSRF - includes/Crypto.php: Verschlüsselung-at-rest für UniFi-Passwörter (AES-256-GCM/libsodium) mit Klartext-Fallback für Bestandsinstallationen - install.php: APP_KEY-Generierung + Reinstall nur mit Admin-Session - Auth.php: absolutes Session-Timeout (SESSION_LIFETIME) durchsetzen - index.php: CSRF + Throttle auch für anonyme öffentliche Voucher-Erstellung - UniFiController.php: createVoucher liefert nicht mehr den falschen Code bei parallelen Erstellungen (note-Match statt blindes reset()) - display_errors in allen Entry-Points deaktiviert, log_errors aktiviert - test.php & m365_debug.php hinter requireAdmin() (Info-Leak) - m365_debug.php: abgeschnittene/kaputte Datei vervollständigt
This commit is contained in:
parent
bf3e55a967
commit
3483da274f
17 changed files with 306 additions and 36 deletions
|
|
@ -1,6 +1,7 @@
|
|||
<?php
|
||||
error_reporting(E_ALL);
|
||||
ini_set('display_errors', 1);
|
||||
ini_set('display_errors', 0);
|
||||
ini_set('log_errors', 1);
|
||||
|
||||
require_once __DIR__ . '/config.php';
|
||||
require_once __DIR__ . '/includes/Database.php';
|
||||
|
|
@ -36,8 +37,18 @@ if (isset($_GET['error'])) {
|
|||
|
||||
// Authorization Code erhalten
|
||||
if (isset($_GET['code'])) {
|
||||
// OAuth-State validieren (CSRF-Schutz). Der State wurde in login.php erzeugt
|
||||
// und in der Session hinterlegt; er muss exakt zurueckkommen.
|
||||
$sessionState = $_SESSION['m365_state'] ?? '';
|
||||
$returnedState = $_GET['state'] ?? '';
|
||||
unset($_SESSION['m365_state']); // One-Time-Token, nach Pruefung verbrauchen
|
||||
|
||||
if ($sessionState === '' || !hash_equals($sessionState, $returnedState)) {
|
||||
die("Ungültiger oder fehlender Sicherheits-Token (OAuth state). Bitte erneut anmelden.<br><a href='login.php'>Zurück zum Login</a>");
|
||||
}
|
||||
|
||||
$code = $_GET['code'];
|
||||
|
||||
|
||||
// Token anfordern
|
||||
$tokenUrl = "https://login.microsoftonline.com/$tenantId/oauth2/v2.0/token";
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue