$auth = false;
if (isset( $PHP_AUTH_USER ) && isset($PHP_AUTH_PW))
{
// On lit le fichier où sont stockés les mots de passe
$filename = '.password';
$fp = fopen( $filename, 'r' );
$file_contents = fread( $fp, filesize( $filename ) );
fclose( $fp );
// On place chaque ligne dans un tableau
$lines = explode ( "\n", $file_contents );
// Chaque ligne correspond à une paire "username/password"
// On compare chaque paire à $PHP_AUTH_USER et $PHP_AUTH_PW.
foreach ( $lines as $line )
{
list( $username, $password ) = explode( ':', $line );
if ( ( $username == "$PHP_AUTH_USER" ) && ( $password == "$PHP_AUTH_PW" ) )
{
$auth = true;
break;
}
}
}
if ( ! $auth )
{
Header("WWW-Authenticate: Basic realm=\"Administration\"");
Header("HTTP/1.0 401 Unauthorized");
echo "<body background=\"../images/bg.gif\"><center><img src =
\"../images/interdit.png\"></center></body>";
exit;
}
else
{
header( 'Location: pft_liste.php' );
}
Sur un serveur ce script marche sans problème
sur un autre lorsque je laisse les champs vides j'ai malgré tout accès à la page protégée alors que
bien sur dans le fichier .password le login/password n'est pas vide.
j'ai lu sur un site que :
" Les fonctions d'identification HTTP de PHP ne sont disponibles que si PHP est exécuté comme module
Apache, et non pas sous la forme d'un CGI"
je ne sais pas comment est installé php sur le serveur qui me pose problème, ceci dit serait ce un
symptome ???
dans ce cas existe t'il une autre solution de protection de page sachant que les htaccess ne sont
pas supportés sur le serveur ??
Mais là en l'occurence, vu que tu indiques bien que le script va s'arrêter, inutile (au sens : ça complique l'écriture) de s'emmêler les crayons à réindenter le code en bloc else qui n'a pas lieu d'être. Mais c'est pas bien grave, juste de la simplicité d'écriture. là j'ai compris........royal
Regarde toi même l'URL dans ton navigateur quand tu fournis un login/pass valides : tu verras que la page est bien ptf_liste.php donc dès lors que quelqu'un connait le nom de la page, il lui suffit de l'appeler. Tout a fait d'accord, mais l'url est visible que pour celui qui connait le mot de passe pour aller
dessus, sinon en admettant que mon script soit une protection de la mort (apparemment pas vraiment) celui qui ne connait pas le mot de passe ne connait pas l'existance de la page . non?
Tiens quitte à chipoter, on devrait même écrire require('pft_liste.php'); parce que si le fichier n'est pas là, il n'y a aucune raison que le script continue, et on n'en est plus aux optimisations "à la php3". Par rapport à ton analogie avec la machine à laver je comprend mieux
2) un truc débile en termes de perfs (déménageur, toussa) ; En l'occurence la MALC que je fais est avec une machine à laver, pas un
frigo. Tiens au hasard : http://groups.google.com/group/fr.comp.lang.php/browse_thread/thread/ca2e5ca0ce8584a5/ (datant de mai 2003... Quand je disais que ça fait des années...) rigolo mais là aussi j'ai compris
Au fait c'est quoi MALC
J'ai lu la faq, j'ai pas super bien compris la faille que occasionne cette url relative snirf (Relative ou absolue, peu importe pour la sécurité)
Très simple : dès lors que je connais le nom de la page à appeler, rien ni personne ne pourra m'empêcher de l'appeler en lui passant les paramètres que je veux. En boucle si je veux. En GET, en POST, etc... De plus, là tu ne renvoie pas de données par Location:http....toto.php?login=$login&pass=$pass mais si ceci était fait, par dessus le marché, comme ceci est une requête GET, les login/pass sont inscrits en clair dans les logs du serveur http... ok
merci
Mais là en l'occurence, vu que tu indiques bien que
le script va s'arrêter, inutile (au sens : ça complique l'écriture) de
s'emmêler les crayons à réindenter le code en bloc else qui n'a pas lieu
d'être. Mais c'est pas bien grave, juste de la simplicité d'écriture.
là j'ai compris........royal
Regarde toi même l'URL dans ton navigateur quand tu fournis un
login/pass valides : tu verras que la page est bien ptf_liste.php donc
dès lors que quelqu'un connait le nom de la page, il lui suffit de
l'appeler.
Tout a fait d'accord, mais l'url est visible que pour celui qui connait le mot de passe pour aller
dessus, sinon en admettant que mon script soit une protection de la mort (apparemment pas vraiment)
celui qui ne connait pas le mot de passe ne connait pas l'existance de la page . non?
Tiens quitte à chipoter, on devrait même écrire
require('pft_liste.php'); parce que si le fichier n'est pas là, il n'y a
aucune raison que le script continue, et on n'en est plus aux
optimisations "à la php3".
Par rapport à ton analogie avec la machine à laver je comprend mieux
2) un truc débile en termes de perfs (déménageur, toussa) ;
En l'occurence la MALC que je fais est avec une machine à laver, pas un
frigo. Tiens au hasard :
http://groups.google.com/group/fr.comp.lang.php/browse_thread/thread/ca2e5ca0ce8584a5/
(datant de mai 2003... Quand je disais que ça fait des années...)
rigolo mais là aussi j'ai compris
Au fait c'est quoi MALC
J'ai lu la faq, j'ai pas super bien compris la faille que occasionne
cette url relative snirf
(Relative ou absolue, peu importe pour la sécurité)
Très simple : dès lors que je connais le nom de la page à appeler, rien
ni personne ne pourra m'empêcher de l'appeler en lui passant les
paramètres que je veux. En boucle si je veux. En GET, en POST, etc... De
plus, là tu ne renvoie pas de données par
Location:http....toto.php?login=$login&pass=$pass mais si ceci était
fait, par dessus le marché, comme ceci est une requête GET, les
login/pass sont inscrits en clair dans les logs du serveur http...
ok
Mais là en l'occurence, vu que tu indiques bien que le script va s'arrêter, inutile (au sens : ça complique l'écriture) de s'emmêler les crayons à réindenter le code en bloc else qui n'a pas lieu d'être. Mais c'est pas bien grave, juste de la simplicité d'écriture. là j'ai compris........royal
Regarde toi même l'URL dans ton navigateur quand tu fournis un login/pass valides : tu verras que la page est bien ptf_liste.php donc dès lors que quelqu'un connait le nom de la page, il lui suffit de l'appeler. Tout a fait d'accord, mais l'url est visible que pour celui qui connait le mot de passe pour aller
dessus, sinon en admettant que mon script soit une protection de la mort (apparemment pas vraiment) celui qui ne connait pas le mot de passe ne connait pas l'existance de la page . non?
Tiens quitte à chipoter, on devrait même écrire require('pft_liste.php'); parce que si le fichier n'est pas là, il n'y a aucune raison que le script continue, et on n'en est plus aux optimisations "à la php3". Par rapport à ton analogie avec la machine à laver je comprend mieux
2) un truc débile en termes de perfs (déménageur, toussa) ; En l'occurence la MALC que je fais est avec une machine à laver, pas un
frigo. Tiens au hasard : http://groups.google.com/group/fr.comp.lang.php/browse_thread/thread/ca2e5ca0ce8584a5/ (datant de mai 2003... Quand je disais que ça fait des années...) rigolo mais là aussi j'ai compris
Au fait c'est quoi MALC
J'ai lu la faq, j'ai pas super bien compris la faille que occasionne cette url relative snirf (Relative ou absolue, peu importe pour la sécurité)
Très simple : dès lors que je connais le nom de la page à appeler, rien ni personne ne pourra m'empêcher de l'appeler en lui passant les paramètres que je veux. En boucle si je veux. En GET, en POST, etc... De plus, là tu ne renvoie pas de données par Location:http....toto.php?login=$login&pass=$pass mais si ceci était fait, par dessus le marché, comme ceci est une requête GET, les login/pass sont inscrits en clair dans les logs du serveur http... ok