Actualiser api.php
This commit is contained in:
@@ -27,10 +27,42 @@ try {
|
|||||||
} catch (PDOException $e) { die(json_encode(["error" => "Connexion BDD échouée"])); }
|
} catch (PDOException $e) { die(json_encode(["error" => "Connexion BDD échouée"])); }
|
||||||
|
|
||||||
// --- Fonctions Utilitaires ---
|
// --- Fonctions Utilitaires ---
|
||||||
|
// Récupère le token d'authentification envoyé par le client, en tolérant les
|
||||||
|
// configurations Apache/WAMP qui ne transmettent pas HTTP_AUTHORIZATION à PHP
|
||||||
|
// par défaut (l'en-tête est bien envoyé par le navigateur, mais Apache le
|
||||||
|
// "mange" avant qu'il n'atteigne $_SERVER, sauf si CGIPassAuth est activé).
|
||||||
|
function getAuthToken() {
|
||||||
|
if (!empty($_SERVER['HTTP_AUTHORIZATION'])) {
|
||||||
|
return $_SERVER['HTTP_AUTHORIZATION'];
|
||||||
|
}
|
||||||
|
// Cas fréquent avec RewriteRule / certains proxys : le header est déplacé ici
|
||||||
|
if (!empty($_SERVER['REDIRECT_HTTP_AUTHORIZATION'])) {
|
||||||
|
return $_SERVER['REDIRECT_HTTP_AUTHORIZATION'];
|
||||||
|
}
|
||||||
|
// Filet de sécurité générique : relire les en-têtes bruts de la requête
|
||||||
|
if (function_exists('getallheaders')) {
|
||||||
|
foreach (getallheaders() as $name => $value) {
|
||||||
|
if (strcasecmp($name, 'Authorization') === 0) {
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} elseif (function_exists('apache_request_headers')) {
|
||||||
|
foreach (apache_request_headers() as $name => $value) {
|
||||||
|
if (strcasecmp($name, 'Authorization') === 0) {
|
||||||
|
return $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return '';
|
||||||
|
}
|
||||||
|
|
||||||
function checkAuth($pdo) {
|
function checkAuth($pdo) {
|
||||||
if ($pdo->query("SELECT COUNT(*) FROM users")->fetchColumn() == 0) return true;
|
if ($pdo->query("SELECT COUNT(*) FROM users")->fetchColumn() == 0) return true;
|
||||||
$token = $_SERVER['HTTP_AUTHORIZATION'] ?? '';
|
$token = getAuthToken();
|
||||||
if ($token !== md5(ENCRYPTION_KEY . 'session')) { http_response_code(403); exit; }
|
if ($token !== md5(ENCRYPTION_KEY . 'session')) {
|
||||||
|
error_log("Auth: ❌ Token invalide ou absent (HTTP_AUTHORIZATION reçu: " . (empty($token) ? "VIDE — vérifier CGIPassAuth/config Apache" : "présent mais différent") . ")");
|
||||||
|
http_response_code(403); exit;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
function encryptData($data) {
|
function encryptData($data) {
|
||||||
|
|||||||
Reference in New Issue
Block a user