Voila, j'ai fais un vulgaire script pour sécuriser mes pages perso :
<?
$texte=$_POST['motdepasse'];
if ($texte=='motdepasse')
{
echo "Ok";
}else{
echo "tapez le mot de passe :";
}
?>
Et déjà, c'est assez sécurisé si je met une page nommée index.html dans ce répertoire, on ne pourra pas avoir accès a pagesuivante sans connaitre ou :
le mot de passe
l'adresse de page suivante
Or, par force brute on m'a dit que c'était faisable...
évidement, je vais mettre un nom long pour pagesuivante.htm mais ça m'énerve de mettre un mot de passe long... Donc, je cherches une fonction permettant de faire attendre 3 seconde en cas d'échec avant d'actualiser la page...
Voila, donc une fonction du genre sleep en Qbasic ou settimeout en javascript
Comme vous L'avez peut être remarqué, je n'utilises pas le php depuis très longtemp...
# dsl mon code n'est pas bien passé
Posté par coucou747 . Évalué à -1.
<head>
</head>
<body>
<?
$texte=$_POST['motdepasse'];
if ($texte=='themax')
{
echo "<a href='page.htm'>Ok</a>";
}else{
echo "tapez le mot de passe :";
}
?>
<form method="post" action="pwl.php">
<input type="password" name="motdepasse" size="10">
<input type="submit" value="OK">
</form>
</body>
</html>
[^] # Re: dsl mon code n'est pas bien passé
Posté par coucou747 . Évalué à 1.
[^] # Re: dsl mon code n'est pas bien passé
Posté par gros_rouge . Évalué à 3.
Comme cela :
<html> --> <html> (note les «;»)
Tu as aussi un bouton `Vérifier' pour visualiser ton message avant de l'envoyer...
Fab.
# htaccess
Posté par Wawet76 . Évalué à 3.
En général, les hébergeurs expliquent comment faire dans leur FAQ. Ça passe par l'utilisation d'un fichier .htaccess
[^] # Re: htaccess
Posté par coucou747 . Évalué à -1.
J'ai installé une debian que mon voisin m'a configuré
sinon, je penses que c'est bcp plus chiant pour les personnes qui vont sur mon site
c'est aussi chiant pour moi car c'est un peu plus dur d'ajouter ujn fichier, la, j'ai juste une ligne a insérer, alors que les .htacces je pourais, mais je devrais ajouter un utilisateur...
[^] # Re: htaccess
Posté par coucou747 . Évalué à 0.
[^] # Re: htaccess
Posté par Wawet76 . Évalué à 2.
Sinon, je pense que tous les site de truc et astuces pour PHP doivent avoir des exemples de protection par mot de passe.
Pour ce qui est d'une attaque "brute"... Le temps necessaire pour se faire servir une page est à mon avis suffisant pour éviter tout problème.
# non
Posté par Krunch (site web personnel) . Évalué à 3.
Maintenant si tu veux un "vrai" accés par mdp, tu vas devoir soit tout mettre dans la même page PHP protégée par elle même (affichage de la page uniquement si le mdp est correct, pas moyen de contourner comme c'est le cas dans ton exemple), soit utiliser les sessions et les cookies pour protéger les autres pages (accès que si le cookie est bon et le cookie ne peut être mis que par la page de login, ou un truc comme ça, j'ai jamais touché à ça), soit utiliser une protection au niveau d'Apache comme suggéré plus haut, qui va te permettre de protéger tout le répertoire du même coup.
A mon avis, la solution la plus facile/rapide à mettre en place est celle des htaccess. C'est pas plus compliqué que ta solution, ça l'est même moins: t'as pas à faire de PHP, t'as juste à maintenir un fichiers d'utilisateurs/mdp. Si tu veux tu peux t'amuser à faire une interface PHP pour gérer le fichier. Si tu veux vraiment pas avoir à taper un login mais juste un mdp, alors amuse toi avec les sessions/cookies ou intégre tout dans la même page si c'est possible.
Pour le problème du brute-force. Avec le système actuel, le méchant n'a qu'à brute-forcer un URL ou un mdp, le plus faible des deux. Avec le htaccess, il doit brute-forcer un login+mdp (en admettant que le login reste "secret" aussi). De toute façon toute application de ce genre est "brute-forçable". Si tu penses que ça en vaut la peine, tu as plusieurs solutions pour limiter les risques. Le plus simple est probablement de bien choisir le mdp, après tu peux t'arranger pour qu'on ne puisse pas faire plus de X tentatives de login par heure (mais pas avec des cookies, du JS ou autre truc "client-side", dans ce cas ça sert à rien et ça fait chier les visiteurs) ou commencer à chercher un système d'authentification plus correct (à coups de PGP/SSL/TLS/... par exemples) mais ça devient tout de suite plus lourd. Yavait un article sur l'authentification par mdp dans le Linux Magazine France du mois dernier je pense (si qqun avec le magazine sous la main peut confirmer...). Ca peut peut-être t'intéresser.
Personnellement, j'ai un serveur FTP avec un compte "invité" qui me sert de temps en temps ("hé pq je peux pas t'envoyer de fichiers par MSN?"). Le mdp change aléatoirement toutes les X heures et il est enregistré dans un fichier auquel moi seul ai accés. Avec ça, bonne chance pour le brute-force. Faut voir si ça peut être applicable à ton cas. Dans le même genre, voir http://slashdot.org/comments.pl?sid=111503&cid=9469343(...)
Le mdp est généré par exemple par un md5 de la somme de l'heure actuelle et du "vrai" mdp (une truc plus correct serait genre md5(md5(time).md5(passwd)), le "." pour la concaténation). Comme ça, toute personne qui a le "vrai" mdp peut reconstituer le mdp actuel mais il change toutes les X heures/minutes. Tu peux aussi t'arranger pour que le mdp change après que qqun se soit loggué, comme ça si la connexion est sniffée, l'attaquant ne sait quand même pas obtenir le mdp puisqu'il a déjà changé (mais bon dans ce cas tu as d'autres problèmes).
Par ailleurs je recommande la lecture de cet article-ci à tous ceux qui débutent dans les applications web (et ça peut surement pas faire de mal à ceux qui en font déjà depuis un moment): http://www.linux-mag.com/2002-09/security_01.html(...)
Pour le coup des md5, vaut mieux comprendre ce qu'on fait avant de l'implémenter. Voir par exemple dans le même magazine: http://www.linux-mag.com/2002-09/cryptography_01.html(...)
-- Krunch le parano
PS: désolé pour les anglicismes et fautes d'orthographes/grammaire mais il est 3h30 passé là
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: non
Posté par xrkpwk . Évalué à 2.
J'avais le même problème jusqu'à ce que j'installe la dernière version de Gaim. Je crois que Kopete supporte les transferts de fichiers aussi, les autres je sais pas...
[^] # Re: non
Posté par coucou747 . Évalué à 0.
Merci pour vos commentaires, avec ça, je devrais pouvoir me débrouiller...
J'ai ajouté une instruction sur mon script :
sleep(3)
eh oui, le php, c'est comme le qbasic...
Donc voila, ce passage la ne sera pas forcé par force brute...
Ensuite, vous dites que je dois mettre toutes mes pagezs perso en php... pour lire les cookis... euh... la flème, j'ai plusieurs répertoires... et plusieurs centaines de fichiers a l'intèrieur... pas tous en html... Donc, je ne sais pas si ça changerais grand chose...
[^] # Re: non
Posté par gros_rouge . Évalué à 3.
La famille Kabila va prendre contact avec toi maintenant...
Fab.
[^] # Re: non
Posté par coucou747 . Évalué à -1.
eh oui, il y a aussi des dingues parmi les linuxois...
Si il y a un admin ici, je lui demande d suprimer imédiatement coucou747 de ce forum!!!
lol
nonon addmin, c'est pour déconner le fais pas stp
lol
[^] # Re: non
Posté par Krunch (site web personnel) . Évalué à 2.
Sinon pour le transfert de fichiers sans FTP/MSN/... -> http://linuxfr.org/tips/296.html(...)
Pour en revenir à cette histoire de mdp, si tu as gardé le même fonctionnement, pas besoin d'utiliser de mdp. Le seul "secret" à connaitre est l'url. Pour protéger les répertoires, le htaccess est probablement la meilleure solution. Je pense que ça le fait même récursivement.
Le délais de 3 secondes empéche rien: qqun peut brute-forcer tranquillement avec X connexions en paralléle, il aura juste les résultat de chacune 3 secondes plus tard mais rien ne l'empèche de refaire une requète avant que le délais se soit écoulé. Et en fait il a même pas besoin de faire ça, il a juste à "brute-forcer" l'url.
Un truc plus "sécurisé" serait de faire une page PHP qui prend 2 paramètres: le mdp et le fichier à accéder. Si le mdp est correct mais que le fichier à accéder n'existe pas, tu "fournis" un listing des fichiers. Si le mdp est correct et le fichier existe, tu renvois directement le fichier. De cette manière tu peux interdire complétement l'accés aux fichiers directement via Apache: on ne peut y accéder que par l'interface web. Mais il faut faire très attention aux fichiers accessibles (gaffe aux trucs genre .. et liens symboliques). Idéalement tu devrais avoir le listing des fichiers accessibles défini explicitement dans un fichier de configuration par exemple.
Ce genre de script existe déjà, suffit de chercher un peu. Enfin pour le mdp je suis pas sur mais ça tu peux le rajouter au niveau d'Apache et comme ça tu n'as qu'une seule page à protéger.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: non
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: non
Posté par fred point . Évalué à 2.
---
Mais si on veut un peu titiller ton systeme de mots de passe invité, il est tout ausi brute forçable.
On connait le login et l'heure actuelle. Il suffit d'employer l'algorithme avec des mots de passe aléatoire pour arriver au résultats.
En plus le md5 n'est pas gourmant en temps procs donc il ne retarde pas le calcul.
Fin c'était juste pour parler :)
[^] # Re: non
Posté par Krunch (site web personnel) . Évalué à 2.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: non
Posté par coucou747 . Évalué à 0.
Je penses que le problème ne me concerne pas vraiment car j'ai un p133 comme serveur apache alors plusieurs requettes...
si je met un mot de passe sufisement long, de toute façon, il ne pourra pas passer avant six mois ?
Comment je peux faire pour savoir si la page est déja ouverte ? Comment empécher cette éventualitée (DSL, si je file l'url a des windowsiens, ils vont pas comprendre que c'est sécurisé si il n'y a pas de mot de passe... et c'est rassurant de voir que la page est un peu protégée... (même si ce n'est que de la déco)...)
Enfin voila
Merci d'avance
[^] # Re: non
Posté par coucou747 . Évalué à -1.
Si vous possédez amsn, et que vous voulez un programme qui vous permet de mettre en forme vos conversations (elles sont toutes enregistrés dans /home/toto/.amsn/bidule@hotmail.com/logs/) pour les mettre en forme au format html, j'ai un programme qui pourait vous interesser...mep.c disponible sur mon site parmi les autres programmes C
[^] # Re: non
Posté par Krunch (site web personnel) . Évalué à 2.
Si le but c'est juste de faire croire que c'est sécurisé au premier neuneu venu alors je sais pas pourquoi tu as demandé de l'aide ici.
Je comprends pas pourquoi tu veux pas utiliser les htaccess.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
[^] # Re: non
Posté par coucou747 . Évalué à 0.
bah disons que j'ai eu jusque la de mauvaises expériences avec les fichiers de configurations linux...
c'est pas joljoli comme système de mot de passe...
on peut pas facilement le configurer
on doit ajouter des utilisateurs
ect...
Et pour trouver un mot de passe qui est composé de plusieurs mots sortant tout droit des parties les plus débiles de mon cerveau reliés par un _ ... je crois que le craker aura un peu de mal... idem pour l'URL dans le dossier : il y a index.html donc, il ne verra pas les autres répertoires et les autres répertoires ont aussi des noms a la con longs ect... introuvables je penses
enfin, je voudrais que vous m'expliquiez comment tester si le script php est déja a s'executer
[^] # Re: non
Posté par Krunch (site web personnel) . Évalué à 2.
http://pear.php.net/package/File_Passwd/docs/0.9.2a/File_Passwd/Fil(...)
Par ailleurs maintenant que tu as dit comment tu trouvais tes mdp, il est bcp plus facile (moins difficile en tout cas) de les cracker :op
Pour éviter d'avoir plusieurs fois le même script qui tourne en parrallèle, on utilise des verrous: tu bloques un verrou au début du script et tu le libéres à la fin. Après tu vérifies si le verrou est bloqué, si c'est le cas le script est en train de tourner. En pratique tu peux utiliser flock() ou une entrée dans une base de données (MySQL sur un P133 avec 48Mo de RAM c'est pas top cependant). Le truc à _ne_ _pas_ faire est d'utiliser un bête fichier genre
Parce que tu n'est pas certains que le fichier n'aura pas été verrouillé par un autre process entre la fin du while et le début du create_file(). Enfin dans 99% des cas sur une machine mono processeur ça ne devrait pas poser de problème mais de toute façon il vaut mieux utiliser flock() qui est fait pour ça (mais c'est pas super portable). Dans ton cas tu peux écrire la date (temps epoch) de la dernière tentative d'authentification dans une db ou un fichier (mais dans ce cas tu dois quand même utiliser flock()) et vérifier que le délais est respecté.
pertinent adj. Approprié : qui se rapporte exactement à ce dont il est question.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.