[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Органичение попыток авторизации
opiums
Здравствуйте, есть простенькая форма авторизации:
<?php

$valid_passwords = array ("admin" => "admin");
$valid_users = array_keys($valid_passwords);

$user = $_SERVER['PHP_AUTH_USER'];
$pass = $_SERVER['PHP_AUTH_PW'];

$validated = (in_array($user, $valid_users)) && ($pass == $valid_passwords[$user]);

if (!$validated) {
header('WWW-Authenticate: Basic realm="My Realm"');
header('HTTP/1.0 401 Unauthorized');
die ("Not authorized");
}

// Тут мы пишем результат
echo "Здравствуйте $user.</br>";
echo "Поздравляем, Вы успешно авторизовались.</br><hr>";

?>


Необходимо ограничить кол-во попыток ввода данных до 3-х например, как это можно сделать в вышеописанной форме? Можно привести какой нибудь пример для наглядности?
arbuzmaster
Если совсем просто, то можно через сессии. Считаем количество попыток и если больше 3, то пишем сообщение!
<? 
session_start();
if (!isset($_SESSION['counter'])) $_SESSION['counter']=0;


if($_SESSION['counter']>3)
{
exit('Все пропало!');

}
if(!$validated){
$_SESSION['counter']++;
}
?>


_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
walerus
Цитата
в вышеописанной форме
никак, либо куки ставить и проверять количество, что не совсем поможет, т.к. куки можно очистить, либо в базе вести учет количества попыток.

зы: Может кто подскажет еще варианты...


walerus
arbuzmaster А если броузер/страницу закрыть и по новой открыть, сессия уплывет же
rolleyes.gif и по новой можно пытаться )
VeRTak
Цитата (arbuzmaster @ 1.05.2017 - 10:34)
Если совсем просто, то можно через сессии. Считаем количество попыток и если больше 3, то пишем сообщение!


Нажали f12 -> Application -> очистили сессию и пробуем снова smile.gif
VeRTak
opiums Я базу пишу ip, количество попыток и так далее. Лично мой вариант, может кто-то делает по другому
opiums
Цитата (VeRTak @ 1.05.2017 - 10:39)
opiums Я базу пишу ip, количество попыток и так далее. Лично мой вариант, может кто-то делает по другому

А если заменить базу на какой нибудь внешний файл, типа list.dat? И записывать всё туда
arbuzmaster
Ну так я же и написал сразу что это самый простой вариант. А так я делал блокировку по ip на время и все параметры в бд сохранял.

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
arbuzmaster
А если кто-нибудь найдёт Ваш list.dat?

_____________
Мой первый сайтик

Посмотри на свой XBMC под другим углом
opiums
Цитата (arbuzmaster @ 1.05.2017 - 10:47)
А если кто-нибудь найдёт Ваш list.dat?

запрет поставить не сложно:
<Files list.dat>
order allow,deny
deny from all
</Files>
Вроде как то так
walerus
arbuzmaster
Цитата
А если кто-нибудь найдёт Ваш list.dat?

Датавские файлы на сколько я помню по дефолту нельзя просмотреть через www, но даже если и найдет, что он с ним делать будет, запись типа: "192.168.1.1||3|BLOCK" ни о чем не скажет, разве что список IP получит laugh.gif

Но это не комильфо я думаю, т.к. ппц записей будет в файле, каждый раз грузить файл, сканировать его в поисках нужной инфы - это жесть. DB - наше все cool.gif
VeRTak
Цитата (walerus @ 1.05.2017 - 11:09)
Но это не комильфо я думаю, т.к. ппц записей будет в файле, каждый раз грузить файл, сканировать его в поисках нужной инфы - это жесть. DB - наше все 


По сути базаа тоже файл biggrin.gif
walerus
VeRTak
так то да, но по скорости... обработать 25мБ файл и 25мБ базу, будет "малость" быстрее ))
depp
блокировть кол-во попыток на определенного юзера. без привязки к ip. допустим ввели три раза неправильно пароль к юзеру admin - в след. раз дать подождать минуту перед вводом. еще три попытки неправильно после минуты - дать подождать уже 10 минут. это исключит любые варианты перебора пароля для конкретного юзера.
для перебора юзеров с популярным паролем - только блокировка по ip.
opiums
Цитата (depp @ 2.05.2017 - 11:02)
блокировть кол-во попыток на определенного юзера. без привязки к ip. допустим ввели три раза неправильно пароль к юзеру admin - в след. раз дать подождать минуту перед вводом. еще три попытки неправильно после минуты - дать подождать уже 10 минут. это исключит любые варианты перебора пароля для конкретного юзера.
для перебора юзеров с популярным паролем - только блокировка по ip.

Ну хорошо, а как это будет выглядеть на языке php?
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.