Proteger une page avec un mot de passe... (une faill ?)

Proteger une page avec un mot de passe... (une faill ?) - PHP - Programmation

Marsh Posté le 15-01-2007 à 17:37:50    

Salut, hello...
 
J'ai fais un petit script PHP, pour proteger une page avec un mot de passe. j'ai fait trés simple, voila le code:
 
 

Citation :

<?php
// J'ai choisi le mot de passe "kangourou"
 
if (isset($_POST['mot_de_passe'])) // Si la variable existe
{
    // On se crée une variable $mot_de_passe avec le mot de passe entré
    $mot_de_passe = $_POST['mot_de_passe'];
}
else // La variable n'existe pas encore
{
    $mot_de_passe = ""; // On crée une variable $mot_de_passe vide
}
 
 
if ($mot_de_passe == "kangourou" ) // Si le mot de passe est bon
{
// On affiche la page cachée.
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Codes d'accès au serveur central de la NASA</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
        <h2>Voici les codes d'accès :</h2>
        <h3>CRD5-GTFT-CK65-JOPM-V29N-24G1-HH28-LLFV</h3>
       
        <hr />
       
        <p>
        Cette page est réservée au personnel de la NASA. N'oubliez pas de la visiter régulièrement car les codes d'accès sont changés toutes les semaines.<br />
        La NASA vous remercie de votre visite.
        </p>
    </body>
</html>
 
<?php
}
 
else // le mot de passe n'est pas bon
{
// On affiche la zone de texte pour rentrer le mot de passe.
?>
 
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head>
        <title>Page protégée par mot de passe</title>
        <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    </head>
    <body>
<p>Veuillez entrer le mot de passe pour obtenir les codes d'accès au serveur central de la NASA :</p>
<form action="mot_de_pass.php" method="post">
<p>
<input type="text" name="mot_de_passe" /> <input type="submit" value="Valider" />
</p>
</form>
<p>Cette page est réservée au personnel de la NASA. Si vous ne travaillez pas à la NASA, inutile d'insister vous ne trouverez jamais le mot de passe ! ;-)</p>
    </body>
</html>
 
<?php
 
} // Fin du else
 
// Fin du code :)
?>


J'ai mis ca sur mon site, et j'ai fait un petit pari avec un ami: je lui es dit qu'il ne pourra jamais accéder a la page (...//càd qu'il ne pourra jamais trouvé le mot de pass) . Mais a chaque fois il trouve le mot de passe !!!!
je ne sais pas comment il fait, mais il ne veut pas me dire.  
alors que je poncé pouvoire protégé une page avec ce genre de script !
 
merci pour votre aide///


Message édité par CreaRetour le 15-01-2007 à 17:46:34
Reply

Marsh Posté le 15-01-2007 à 17:37:50   

Reply

Marsh Posté le 15-01-2007 à 18:07:29    

UP

Reply

Marsh Posté le 16-01-2007 à 05:28:47    

Regardes tes logs, je suis quasi sur que tu trouveras des milliers de lignes avec différents mots de passe :whistle:

Reply

Marsh Posté le 16-01-2007 à 09:29:25    

ton pote est h3cK3r de l33t tu peux pas lutter il est trop fort.

Reply

Marsh Posté le 16-01-2007 à 11:27:28    

Si le mot de passe que tu mets est pourri (comme "kangourou" ) forcément il va le trouver avec une liste de mots. Ce qu'il te faut, c'est d'une part choisir un mdp d'au moins 8 caracteres avec melange majuscules/minuscules/chiffres qui ne soit pas dans le dico, et d'autre part bannir une adresse IP apres un certain nombre de tentatives infructueuses...

Reply

Marsh Posté le 16-01-2007 à 11:50:30    

bannir, c'est un peu violent. Moi, je dirais boquer l'accès au site pendant une durée (1 heure, par ex) + envoi d'un mail à l'admin pour le prévenir qui'il y a eu une tentative. Ca sera à lui de prendre la décision finale de la marche à suivre.

Reply

Marsh Posté le 16-01-2007 à 14:52:52    

Et peut être éviter de stocker le mdp en clair. Un hash serait peut être préférable. Non?

Reply

Marsh Posté le 16-01-2007 à 14:54:43    

un petit md5() par ex...

Reply

Marsh Posté le 16-01-2007 à 15:48:37    

Ben déjà, t'as quoi d'autres comme service de lancé sur le serveur? (si ton copain a accés au dossier du site soit par ftp soit par partage windows, ta protection ne sert à rien)
De même t'as vérifié les autres pages dynamique du site? (il suffit parfois qu'une page inclus le texte de n'importe quel fichier sans l'interpréter pour que le code qu'elle contient devienne visible à tous)
 
Et oui, sécurisé un script c'est bien mais s'il y a une faille grosse comme un immeuble à côté, ca ne sert pour ainsi dire à rien.

Reply

Marsh Posté le 16-01-2007 à 16:25:11    

il passe comme variable mot_de_passe un truc du genre :
" || $mot_de_passe == true || $mot_de_passe == "

 

non?


Message édité par zbang le 16-01-2007 à 16:26:58
Reply

Marsh Posté le 16-01-2007 à 16:25:11   

Reply

Marsh Posté le 16-01-2007 à 17:40:01    

zbang > Il ne fait que des comparaisons de texte dans son code (aucune exécution du contenu d'une variable, aucune accés à une base de donnée et aucun affichage du contenu d'une variable)
Ca ne peut donc pas être ça.

Reply

Marsh Posté le 16-01-2007 à 20:58:50    

meme avis que Leflos5
déjà je mettrai:
<input type="password" name="mot_de_passe" />
au cas où ton navigateur aurait gardé la liste des champs saisis

Reply

Marsh Posté le 17-01-2007 à 09:15:27    


J'ai apris ça sur le siteduzero, mais j'ai pas copier a l'aveglette, j'ai compris ce que je fait, dailleur c'est trés simple.
 
En fait je croi que mon pote a utilisé un logiciel de brut force (je croi). l'idée de banir l'ip aprés plusieur tantative me parés bien, mais comme je débute je ne sais pas trop comment faire avec l'ip...
pouvez vous m'aidé svp
 
merci


Message édité par CreaRetour le 17-01-2007 à 09:16:38
Reply

Marsh Posté le 17-01-2007 à 09:17:08    

Putain, fais un effort avec l'orthographe par pitie....

Reply

Marsh Posté le 17-01-2007 à 09:37:32    

corkynation a écrit :

meme avis que Leflos5
déjà je mettrai:
<input type="password" name="mot_de_passe" />
au cas où ton navigateur aurait gardé la liste des champs saisis

 

je crois que le navigateur est un peu plus malin que ca, genre il dois checker plus le type de input que le nom ...


Message édité par Le_Tolier le 17-01-2007 à 10:31:18
Reply

Marsh Posté le 17-01-2007 à 10:18:09    

l'idée de banir l'ip aprés plusieur tantative me parés bien, mais comme je débute je ne sais pas trop comment faire avec l'ip...  
pouvez vous m'aidé svp  

Reply

Marsh Posté le 17-01-2007 à 15:46:02    

Ce qu'il faut voir, c'est qu'une IP peut correspondre à plusieurs machines qui n'ont rien à voir entre elles (derrière le même proxy sans que ça soit la même personne qui essaye), donc à toi de voir si ça colle avec le contexte de tes utilisateurs :)
 
Parce que punir l'un à cause de l'autre c'est pas top, mais je t'avoue qu'il y a pas d'autres moyens fiables d'identifier un client. Cependant faut aussi penser qu'en ip/adsl, suffit de se déconnecter et se reconnecter pour avoir une ip différente, donc...
 
Pour avoir l'IP du client suffit d'utiliser les variables de php, fais un phpinfo() et cherche la bonne ;) Après tu stockes le nombre de tentatives dans une session et tu bloques si tentatives successives (nombre par laps de temps supérieur) à la valeur que t'auras défini. A toi de voir comment tu stockes (bd, fichier...)

Reply

Marsh Posté le 17-01-2007 à 16:43:56    

$_SERVER['REMOTE_ADDR'] pour avoir l'ip de l'utilisateur qui a exécuté une requête.
Eventuellement, ça peut être couplé à dautres infos comme la version du navigateur utilisé pour voir si c'est le même utilisateur. Mais si l'utilisateur est sur son lieu de travail, derrière un proxy, y'a de fortes chances que tous les gens de sa boîte utilisent le même navigateur...

Reply

Marsh Posté le 17-01-2007 à 19:00:33    

Oui, récupérer l'ip, la version navigateur et l'OS utilisé. Même si rufo a raison, ça peut parfois sauver un ou deux gars innocents.  
En prime tu peux placer un cookie qui indiquera le ban, le mec peut ne pas penser à vérifier, et le client qui sert à bruteforcer peut peut-être les accepter.
 
Mais avant de faire tout ça vérifie les logs du serveur pour voir s'il t'a effectivement bruteforcé, car comme le souligne omega2, ça pourrait être une faille du serveur ou d'un autre script.


Message édité par Djebel1 le 17-01-2007 à 19:01:30
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed