From d529f497ae37f95bfe0e7c57cf9974f53c73574d Mon Sep 17 00:00:00 2001 From: Louis-Arnaud Catoire Date: Sat, 7 Mar 2026 20:48:11 +0100 Subject: [PATCH] [Sync EN] Fix outdated content on the HTTP Basic auth page Fixes #2618 --- features/http-auth.xml | 118 ++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 79 deletions(-) diff --git a/features/http-auth.xml b/features/http-auth.xml index 27baf79c24..e0509340fe 100644 --- a/features/http-auth.xml +++ b/features/http-auth.xml @@ -1,11 +1,11 @@ - + Identification HTTP avec PHP - + Il est possible d'utiliser la fonction header pour demander une identification ("Authentication Required") au client, @@ -21,7 +21,7 @@ est supportée. Se reporter à la fonction header pour plus d'informations. - + Voici un exemple de script qui force l'identification du client pour accéder à une page : @@ -33,8 +33,8 @@ - + - Note de compatibilité + Compatibilité Il faut être bien prudent lors de l'utilisation d'en-têtes HTTP avec PHP. Afin de garantir un maximum de compatibilité entre les navigateurs, le mot clé "Basic" doit être écrit avec un B majuscule, et le texte de présentation doit être placé entre doubles guillemets (pas des simples), et exactement un espace doit précéder le code 401 dans l'en-tête - HTTP/1.0 401. Les paramètres d'authentification doivent + HTTP/1.1 401. Les paramètres d'authentification doivent être séparés par des virgules. - + Au lieu d'afficher simplement les variables globales PHP_AUTH_USER et PHP_AUTH_PW, il est préférable de @@ -67,95 +67,55 @@ if (!isset($_SERVER['PHP_AUTH_USER'])) { Par exemple, en envoyant ces informations à une base de données, ou en recherchant dans un fichier dbm. - - - Il faut se méfier des navigateurs bogués, tels qu'Internet Explorer. - Ils semblent très susceptibles en ce qui concerne l'ordre des en-têtes. - Envoyer l'en-tête d'identification (WWW-Authenticate) - avant le code de HTTP/1.0 401 semble lui convenir - jusqu'à présent. - - + - Note de configuration + Configuration Apache PHP utilise la présence de la directive AuthType pour déterminer si une identification externe est activée. - + Notez cependant que les manipulations ci-dessus n'empêchent pas quiconque possède une page non identifiée de voler les mots de passe des pages protégées, sur le même serveur. - - Netscape et Internet Explorer effaceront le cache d'identification client - s'ils reçoivent une réponse 401. Cela permet de déconnecter - un utilisateur, pour le forcer à saisir à nouveau son nom de compte - et son mot de passe. Certains programmeurs l'utilisent pour donner un - délai d'expiration ou, alors, fournissent un bouton de déconnexion. - - - - Identification HTTP avec nom d'utilisateur/mot de passe forcé - -Bienvenue : " . htmlspecialchars($_SERVER['PHP_AUTH_USER']) . "
"; - echo "Ancien : " . htmlspecialchars($_REQUEST['OldAuth']); - echo "
\n"; - echo "\n"; - echo "\n"; - echo "\n"; - echo "

\n"; -} -?> -]]> -
-
-
- - Ce comportement n'est pas nécessaire par le standard - d'identification HTTP Basic. Les tests avec - Lynx ont montré qu'il n'affectait - pas les informations de session lors de la réception d'un - message de type 401. Ce qui fait que presser la touche "retour" puis "avant" - sur un client Lynx - précédemment identifié donnera l'accès direct à - la ressource tant que les informations d'identification n'ont pas changé. Cependant, l'utilisateur peut utiliser la touche - '_' pour détruire les anciennes identifications. - - - Afin de rendre fonctionnelle l'authentification HTTP avec un serveur IIS avec - la version CGI de PHP, il faut éditer - la configuration "Directory Security". Cliquer - sur "Edit" et activez uniquement - "Anonymous Access", tous les autres champs doivent - être laissés non actifs. - - Note pour les utilisateurs de IIS : + Comportement des navigateurs + + L'authentification HTTP Basic est vraiment basique, et n'a pas été conçue pour + gérer les déconnexions. HTTP étant un protocole sans état, la plupart des + navigateurs mettent en cache les identifiants fournis dès qu'un code de statut + 2xx est reçu, et les envoient à chaque requête, jusqu'à la + fermeture du navigateur. Il n'existe pas de moyen défini pour qu'un serveur + demande une nouvelle saisie des identifiants. + + Au fil des années, diverses solutions de contournement se sont répandues sur + internet, mais elles dépendent toutes de la manière dont les différents + navigateurs ont choisi de gérer des cas limites non définis (voire des + violations du standard HTTP). Il est préférable d'éviter ces solutions de + contournement et de ne pas utiliser l'authentification Basic pour quoi que + ce soit de sérieux. + + + + + Configuration IIS - Pour que l'identification HTTP fonctionne avec IIS, la directive PHP + Afin de rendre fonctionnelle l'authentification HTTP avec un serveur IIS avec + la version CGI de PHP, la directive php.ini cgi.rfc2616_headers - doit être définie à 0 (la valeur par défaut). + doit être définie à 0 (la valeur par défaut), et il faut + éditer la configuration IIS "Directory Security". + Cliquer sur "Edit" et activer uniquement + "Anonymous Access", tous les autres champs doivent + être laissés non actifs. - +