За последние 24 часа нас посетил 133021 программист и 7702 робота. Сейчас ищут 2033 программиста ...

Защита пароля от хакера

Тема в разделе "PHP для новичков", создана пользователем Dimon2x, 12 ноя 2017.

  1. Dimon2x

    Dimon2x Старожил

    С нами с:
    26 фев 2012
    Сообщения:
    2.199
    Симпатии:
    183
    Нормальный ли способ получился?.

    При вводе правильного пароля сайт все равно пишет, что пароль неправильный, но ждет от вас второго пароля. То есть авторизация происходит при введении двух правильных паролей подряд. Если после первого пароля введен неправильный, а затем правильный - авторизации не происходит.

    То есть, если ввести первый раз неправильный пароль, то программа будет подбирать пароль вечно, пока не закрыть браузер и снова его открыть, что бы отчистить сессию.

    Псевдокод:

    index.php

    PHP:
    1. <?php
    2.     session_start();
    3.    
    4.     if(!empty($_SESSION['user'])) {
    5.         echo 'Добро пожаловать ' . $_SESSION['user'];
    6.     }
    7.     else {
    8.         require_once 'auth.php';
    9.     }
    10.     //session_destroy();
    11. ?>
    auth.php

    PHP:
    1. <?php
    2.     $login = 'Dima';
    3.     $pass = '827ccb0eea8a706c4c34a16891f84e7b'; //12345
    4.     $pass2 = 'd45ec53e6fa3f8e64b5e434b374417b1'; // zxc3
    5.     $password = $pass . $pass2;
    6.    
    7.     if(!empty($_POST['login']) && !empty($_POST['password'])) {
    8.         if(empty($_SESSION['pass1'])) {
    9.             $_SESSION['pass1'] = $_POST['password'];
    10.             header('Location: ./');
    11.         }
    12.        
    13.         elseif(!empty($_SESSION['pass1'])) {
    14.             $_SESSION['pass2'] = $_POST['password'];
    15.             header('Location: ./');
    16.         }
    17.        
    18.         if(!empty($_SESSION['pass1']) && !empty($_SESSION['pass2'])) {
    19.             $passwordVer = md5($_SESSION['pass1']) . md5($_SESSION['pass2']);
    20.        
    21.             if($_POST['login'] == $login && $passwordVer === $password) {
    22.                 $_SESSION['user'] = $login;
    23.                 header('Location: ./');
    24.             }
    25.            
    26.             else {
    27.                 header('Location: ./');
    28.             }
    29.         }
    30.        
    31.     }
    32.     else {
    33. ?>
    34.     <p>Неверный логин или пароль</p>
    35.     <form method="POST" action="">
    36.         <p><label><input type="text" name="login" placeholder="Логин"></label></p>
    37.         <p><label><input type="password" name="password" placeholder="Пароль"></label></p>
    38.        
    39.         <input type="submit">
    40.     </form>
    41. <?php
    42.     }
    43. ?>
     
  2. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Не, называется - не ходите на мой сайт. Нормально - это когда после трёх попыток ввода неправильного пароля надо 15 минут подождать - вполне достаточно для защиты от брутфорса
     
    MouseZver нравится это.
  3. MouseZver

    MouseZver Суперстар

    С нами с:
    1 апр 2013
    Сообщения:
    7.841
    Симпатии:
    1.338
    Адрес:
    Лень
    приходит рак, вписывает пароль во форме, сабмит... и присылается форма опять... вы че сраные разрабы, издеваетесь ?
     
  4. mkramer

    mkramer Суперстар
    Команда форума Модератор

    С нами с:
    20 июн 2012
    Сообщения:
    8.497
    Симпатии:
    1.726
    Ну банки применяют двухфакторную аутентификацию, и если на сайте столь же важные данные, можно применить. Но тогда нужно второй пароль генерируется случайным образом и присылается, к примеру, по СМС.