Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Лимит авторизаций


Автор: grider 28.3.2008, 08:29
Здравстуйте всем. Есть вот такой код:

session_start();
if(!isset($_POST['ok']))
{
 echo " <html>
        <head><title>Autheration System</title></head>
        <body bgcolor=linen>
        <table height='100%' width='100%'>
        <tr>
        <td valign=center align=middle>
        <form method='POST' >
        <table border=1>
        <tr>
        <td align=middle colspan=2><b>Административный вход</b></td></tr>
        <tr><td align=right><font face='tahoma' size='2'>Login:</font></td>
        <td><INPUT name='login'></td></tr>
        <tr>
        <td><font face='tahoma' size='2'>Password:</font></td>
        <td><INPUT type=password name='pass'></td></tr>
        <tr>
        <td align=middle colspan=2>
        <input type=submit name='ok' value=Войти></td></tr>
        </table></form></td>
        </tr>
        </table>
        </body>
        </html>";
}
    else 
      {
include ("connect.php");
$res=mysql_query("SELECT * FROM auth WHERE login='".$_POST['login']."'AND pass='".$_POST['pass']."'",$conn);
         if(mysql_num_rows($res)!=1)
           {    
             echo "Введены не верные логин или пароль";
           }
         else
                       {    
                          $_SESSION['status']=true;    
                          Header("Location:admin.php");
             exit();             
           }
    
       mysql_close($conn);
      }

Как можно реализовать такой алгоритм с помощью сессий где если пользователь вводит N-раз пароль,логин не правильно то система просто блокирует его дальнейшую работу или IP адрес пользователя

Автор: Feldmarschall 28.3.2008, 08:45
С помощью сессий такой механизм реализовывать бессмысленно. 
Можно только с помощью БД.
Соответственно - отдельная таблица, куда пишется логин или ид пользователя, время входа и, опционально - IP адрес
при вводе логина смотрим в таблицу, сколько было попыток за последнее время, и, если количтество нас не устраивает, блокируем возможность входа. можно по экспоненте: если три раза ввели неправильно - блокируем на минуту, 5 - на 5, 10 - блокируем вообще, с возможностью разблокировки через обращение в администрацию. Ну, или что фантазия подскажет.
IP адрес блокировать в современных условиях смысла, в общем, не имеет


Автор: grider 28.3.2008, 13:41
  Feldmarschall напиши сам код где смотрим в табл. сколько раз было попыток входа если 
не устраивает, блокируем возможность входа

Автор: Feldmarschall 28.3.2008, 13:54
Я думаю, что если ты не в состоянии написать такой код самостоятельно, то твоей системе такая защита и не нужна.
Гораздо важнее сейчас для тебя занаться повышением своей квалификации в программировании.
к примеру, для твоей авторизации даже подбирать ничего не надо - можно просто получить доступ, используя sql инъекцию
Чтобы это предотвратить, передаваемые в запрос данные следует обрабатывать функцией mysql_real_escape_string()
любые данные и всегда.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)