Limiter les tentatives de connexion à un accès sécurisé php

Consultez la formation à Google Analytics de WebRankInfo / Ranking Metrics

darkjukka
WRInaute passionné
WRInaute passionné
 
Messages: 612
Inscription: Sam Avr 28, 2007 12:34

Limiter les tentatives de connexion à un accès sécurisé php

Message le Mer Juin 18, 2008 16:46

Bonjour,

Voila, j'aimerai limiter les tentatives de connexion à une page sécurisée en PHP à 3 et bannir l'ip si les 3 tentatives ont échouées.

Actuellement j'utilise ce code pour me connecter :

Code: Tout sélectionner
<?php
session_start();

if(!isset($_SESSION['ident'])) {
$_SESSION['ident'] = false ;
}

$db_link = @mysql_connect($host,$login,$pass);
mysql_select_db($base);

if(isset($_GET)) {
foreach($_GET as $k => $v) {
$_GET[$k] = trim(htmlspecialchars($v)) ;
}
}

$login_ent = htmlentities($_POST['login']) ;
$pass_crypt_ent = htmlentities(md5($_POST['pass']));

if($login_news == "$login_ent" && $pass_news == "$pass_crypt_ent") {
$_SESSION['ident'] = true ;
}

if($_SESSION['ident'] == false) {
//Affichage du formulaire de connexion
}elseif($_SESSION['ident'] == true) {
//Affichage de la page sécurisée}

?>


Pouvez vous m'aidez à faire cela ? Je n'ai rien trouvé sur le net.

Merci :)


enky
WRInaute impliqué
WRInaute impliqué
 
Messages: 403
Inscription: Dim Mar 23, 2003 23:29

Message le Mer Juin 18, 2008 17:45

C'est que tu n'a pas assez cherché ;)

Bon pour faire simple fait une table dans laquelle tu enregistre l'ip le nombre de tentative et l'heure de la dernière tentative.

tu logue chaque tentative et quand tu arrive à 3 en moins de x minute tu bann dans ton script.

darkjukka
WRInaute passionné
WRInaute passionné
 
Messages: 612
Inscription: Sam Avr 28, 2007 12:34

Message le Mer Juin 18, 2008 17:57

J'ai peut être mal cherché alors oui (ou pas avec les bon termes)

Aurais-tu un lien vers un tuto qui m'aiderait ? Je ne suis vraiment pas capable de monter ça comme ça sans aide.


webmasterlamogere
WRInaute accro
WRInaute accro
 
Messages: 1874
Inscription: Dim Déc 17, 2006 21:08

Message le Mer Juin 18, 2008 18:04

tu peux regarder de ce côté : http://www.phpsources.org/ressources-se ... php171.htm

c'est plus complet que ce que tu veux faire mais ça peut aider.

darkjukka
WRInaute passionné
WRInaute passionné
 
Messages: 612
Inscription: Sam Avr 28, 2007 12:34

Message le Jeu Juin 19, 2008 20:16

Merci pour ce script très complet mais je n'arrive pas à le faire fonctionner :?
Je pense me tourner vers une autre solution, refuser l'envoie du formulaire si le temps d'affichage de la page est inférieur à 10 secondes, je cherche comment faire sur le net pour le moment.


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12388
Inscription: Dim Aoû 08, 2004 20:24

Message le Jeu Juin 19, 2008 21:17

il te suffit de créer une variable de session qui contient le microtime, lors de l'affichage de la page, et ensuite de comparer avec le microtime lors de la réception du formulaire


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Jeu Juin 19, 2008 21:28

Via les sessions ça sous entend que le "robot" qui fera le brute force accepte les cookies :D


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12388
Inscription: Dim Aoû 08, 2004 20:24

Message le Jeu Juin 19, 2008 21:56

Bool a écrit:Via les sessions ça sous entend que le "robot" qui fera le brute force accepte les cookies :D
si robot, pas de session donc pas d'acceptation de formulaire.


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Jeu Juin 19, 2008 22:34

Pour un brut force, on en a pas besoin : on soumet le formulaire, et on regarde si le formulaire de connexion est encore affiché.
Dans le bout code ci dessus, ça passe parfaitement.

webmasterdemonsite
WRInaute accro
WRInaute accro
 
Messages: 1086
Inscription: Ven Aoû 31, 2007 23:47

Message le Ven Juin 20, 2008 10:45

tu peut aussi mettre un delai entre chaque tentative

darkjukka
WRInaute passionné
WRInaute passionné
 
Messages: 612
Inscription: Sam Avr 28, 2007 12:34

Message le Ven Juin 20, 2008 12:11

J'ai au final opté pour la dernière solution qui a été la plus simple vu mon niveau de PHP :D

J'ai changé le système de connexion en utilisant un sur le site de Koogar (très bon site d'ailleurs, j'y vais souvent chercher quelques bouts de code :)), qui me permet de renvoyer une erreur si le pass ou le login n'est pas bon.
Dans ce cas "j'endors" le script 30 secondes avec la fonction sleep () ce qui limite à deux tentatives max par minutes (au lieu de 10aines voir 100aines à la secondes) et je m'envoie un mail avec l'IP du bonhomme (ou bien robot) que je pourrais bannir et les login et pass qu'il a testé, à quelle heure, etc ...

D'ailleurs il faut obligatoirement accepter les cookies sur son navigateur pour entrer dans l'espace protégé.

webmasterdemonsite
WRInaute accro
WRInaute accro
 
Messages: 1086
Inscription: Ven Aoû 31, 2007 23:47

Message le Ven Juin 20, 2008 14:04

par contre si c'est un robot qui spam ton formulaire, il pourra toujours essayer toutes les 30 secondes...


Bool
WRInaute accro
WRInaute accro
 
Messages: 1290
Inscription: Jeu Fév 26, 2004 15:59

Message le Ven Juin 20, 2008 14:18

Le sleep() il faut le mettre dans tous les cas... sinon quand le robot voit qu'il n'a pas de réponse sous 1 seconde (voir moins), il considère que le pass est faux et retente avec un autre pass.

Sans oublier qu'il peut également ouvrir plusieurs connexions simultanément.


A mon avis pour ce genre de formulaire il est préférable de mettre un sleep d'une seconde, mais valable dans tous les cas, y compris lorsque le mot de passe est valide.
Mais du coup on s'expose plus facilement à un DoS. :roll:

webmasterdemonsite
WRInaute accro
WRInaute accro
 
Messages: 1086
Inscription: Ven Aoû 31, 2007 23:47

Message le Ven Juin 20, 2008 14:50

Bool a écrit:Mais du coup on s'expose plus facilement à un DoS. :roll:


tient, c'est quoi un DOS ?


Leonick
WRInaute accro
WRInaute accro
 
Messages: 12388
Inscription: Dim Aoû 08, 2004 20:24

Message le Ven Juin 20, 2008 15:12


Limiter les tentatives de connexion à un accès sécurisé php

Formation recommandée sur ce thème :

Formation Google Analytics : en 2 jours, apprenez comment exploiter l'essentiel des possibilités de l'outil de mesure d'audience de Google. Formation animée par Julien Coquet, expert certifié officiellement par Google Analytics.

Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.

Lectures recommandées sur ce thème :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 4 invités