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

Discussion dans 'Administration d'un site Web' créé par darkjukka, 18 Juin 2008.

  1. darkjukka
    darkjukka WRInaute impliqué
    Inscrit:
    28 Avril 2007
    Messages:
    574
    J'aime reçus:
    0
    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:
    <?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 :)
     
  2. enky
    enky WRInaute occasionnel
    Inscrit:
    23 Mars 2003
    Messages:
    268
    J'aime reçus:
    0
    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.
     
  3. darkjukka
    darkjukka WRInaute impliqué
    Inscrit:
    28 Avril 2007
    Messages:
    574
    J'aime reçus:
    0
    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.
     
  4. webmasterlamogere
    webmasterlamogere WRInaute passionné
    Inscrit:
    17 Décembre 2006
    Messages:
    1 647
    J'aime reçus:
    1
  5. darkjukka
    darkjukka WRInaute impliqué
    Inscrit:
    28 Avril 2007
    Messages:
    574
    J'aime reçus:
    0
    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.
     
  6. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    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
     
  7. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 543
    J'aime reçus:
    0
    Via les sessions ça sous entend que le "robot" qui fera le brute force accepte les cookies :D
     
  8. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
    si robot, pas de session donc pas d'acceptation de formulaire.
     
  9. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 543
    J'aime reçus:
    0
    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.
     
  10. webmasterdemonsite
    webmasterdemonsite WRInaute impliqué
    Inscrit:
    1 Septembre 2007
    Messages:
    988
    J'aime reçus:
    0
    tu peut aussi mettre un delai entre chaque tentative
     
  11. darkjukka
    darkjukka WRInaute impliqué
    Inscrit:
    28 Avril 2007
    Messages:
    574
    J'aime reçus:
    0
    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é.
     
  12. webmasterdemonsite
    webmasterdemonsite WRInaute impliqué
    Inscrit:
    1 Septembre 2007
    Messages:
    988
    J'aime reçus:
    0
    par contre si c'est un robot qui spam ton formulaire, il pourra toujours essayer toutes les 30 secondes...
     
  13. Bool
    Bool WRInaute passionné
    Inscrit:
    26 Février 2004
    Messages:
    1 543
    J'aime reçus:
    0
    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:
     
  14. webmasterdemonsite
    webmasterdemonsite WRInaute impliqué
    Inscrit:
    1 Septembre 2007
    Messages:
    988
    J'aime reçus:
    0
    tient, c'est quoi un DOS ?
     
  15. Leonick
    Leonick WRInaute accro
    Inscrit:
    8 Août 2004
    Messages:
    19 274
    J'aime reçus:
    0
  16. darkjukka
    darkjukka WRInaute impliqué
    Inscrit:
    28 Avril 2007
    Messages:
    574
    J'aime reçus:
    0
    Changement de système alors, anti-flood qui renvoie vers Google (pas trouvé mieux lol) si il y a moins de 30 secondes entre 2 exécutions du script.
     
Chargement...
Similar Threads - Limiter tentatives connexion Forum Date
Limiter la zone d'expédition pour un produit e-commerce 24 Octobre 2019
Arfooo PHP 7 : (2) session_start(): Cannot send session cache limiter Annuaires et moteurs 31 Janvier 2019
Limiter un nombre à une valeur max dans SQL Administration d'un site Web 29 Mars 2018
Comment limiter le nombre de caractères d'un texte Développement d'un site Web ou d'une appli mobile 6 Août 2014
Duplicate content, 2 sites, même contenu. Comment limiter les dégâts ? Débuter en référencement 17 Juin 2014
Limiter le nombre de redirections Demandes d'avis et de conseils sur vos sites 25 Septembre 2013
Cannot send session cache limiter - headers already sent en php5 Développement d'un site Web ou d'une appli mobile 14 Mars 2013
Limiter nombre visiteurs simultanés ? Administration d'un site Web 16 Mars 2012
Limiter les téléchargements aux fichiers payés uniquement Développement d'un site Web ou d'une appli mobile 7 Janvier 2012
limiter les résultats d'une recherche google Développement d'un site Web ou d'une appli mobile 16 Septembre 2011
limiter les hotlinks Développement d'un site Web ou d'une appli mobile 13 Août 2011
Cherche un script pour faire X traitements par seconde (limiter à X) Développement d'un site Web ou d'une appli mobile 25 Avril 2011
MAGPIE RSS : Limiter le nombre de caractères "description" Développement d'un site Web ou d'une appli mobile 11 Mars 2011
Limiter nombre de connexions par IP et référencement Débuter en référencement 1 Décembre 2010
Code php pour limiter le nombre de recherche. Développement d'un site Web ou d'une appli mobile 29 Septembre 2010
Limiter les mots clés Débuter en référencement 22 Avril 2010
Limiter/brider la consommation d'un script PHP en particulier ? Développement d'un site Web ou d'une appli mobile 30 Mars 2010
Limiter requete SQL par KML ? Développement d'un site Web ou d'une appli mobile 28 Janvier 2010
Limiter le budget journalier sur une annonce en particulier? AdWords 7 Janvier 2010
limiter la bande passante avec [ModBandwidth] Développement d'un site Web ou d'une appli mobile 5 Août 2009