У меня вопросы, можно?) Что значит "сессия открывается как есть" ? Другими словами механизм сессий ты сделал вручную и стандартным не пользуешься?
@SpikePHP думаю он говорил о том, что в самой сессии эти данные хранятся, типа: PHP: $_SESSION['user_hash'] = md5($user_ip.$user_agent); Таким образом, если кто-то сопрет сессионную куку, то её в большинстве случаев будет не достаточно, т.к. у вора должен быть тот же юзер-агент, что не трудно и тот же ip, что уже слегка сложнее. Пых сессию подгрузит, но Сурикат её не примет, т.к. с его точки зрения она будет подделана. Использовать альтернативные реализации сессий при этом не нужно, все делается нативно.
Боюсь вас расстроить, но если у вас уводят сессионную куку, это значит что кто-то выполняет JS в вашем браузере в вашем сеансе. А следовательно для сервера он это вы — и по IP и по User-Agent. --- Добавлено --- Я других способов увести куку что-то не могу придумать. Только XSS. --- Добавлено --- Для большей секурности используйте параметр httpOnly https://php.ru/manual/function.session-set-cookie-params.html --- Добавлено --- Можно конечно предположить вариант, что кто-то через XSS собирает куки для будущего использования напотом. Но сесионная кука по определению товар быстропортящийся. Нелишне подстраховаться и, не доверяя сессионной сборке мусора, считать сессию невалидной после N минут бездействия.
1) Я не говорю, что занимаюсь этим или сделаю. 2) То, что беззаконие лучше не творить, расскажи орде мудаков, которые каждый день его нарушают. От того, что ты пальчиком грозишь, риски ниже не станут. Забота о пользователях - вот наш закон. --- Добавлено --- Ды это на флешку стянул копипастой в текстовом файлике, не суть же. Да, речь о том, что компьютер злопыхателя - иной. То, что Арту описал - тяжелая форма XSS-рака. Боюсь, кража кук в таком случае - меньшее, чем можно отделаться. Но то уже совсем другая история --- Добавлено --- Обычный сейшн старт и верификация сессии просто по факту того, что она открылась. Все реализовано через стандартный. Ромыч, собственно, все верно сказал. Просто верификация сессии устанавливается не просто по факту того, что она открылась, а еще и по совпадению отпечатков пользователя с теми, что в ней хранятся. Если не совпали - разрушаем сессию, разлогиниваем пользователя.
Да. Он толково объяснил, я всё понял. Я просто почему-то думал, что ip и userAgent обязательно должны быть зашиты в названии текстового файла-сессии на сервере(название которого висит у пользователя в куке PHPSESSID). А он написал, что достаточно в одну из переменных, допустим $_SESSION['user_hash'] положить. В любом случае спасибо вам, что делитесь знаниями, которые можно использовать на практике!
По совету друзей, стал вписывать защиту авторизации. С защитой от перебора не получается. Она не работает. Где я ошибся? PHP: session_start(); $connect = mysql_connect('localhost', 'cdd', '5c8f') or die(); mysql_select_db('cdd'); $query = mysql_query("SELECT * FROM users"); $user_data = mysql_fetch_array($query); if(!$_SESSION['bruteforce']){ $_SESSION['bruteforce'] = 0; $_SESSION['bruteforce_t'] = time (); $_SESSION['bruteforce_ip'] = $_SERVER['REMOTE_ADDR']; } $_SESSION['bruteforce']++; if((time() - $_SESSION['bruteforce_t']) > 9 ) unset ($_SESSION['bruteforce']); if(!empty($user_data['ip'])){ if((time() - $user_data['ip_del_time']) < 9){ exit ("ip попробовать через 10 минут"); } else { $select = mysql_query("UPDATE users SET ip='', ip_del_time='' WHERE login = 'dd'"); if(!$select) exit ("ошибка"); unset ($_SESSION['bruteforce']); exit(); } } if ($_SESSION['bruteforce'] > 3){ $select = mysql_query("UPDATE users SET ip='$_SESSION[bruteforce_ip]', ip_del_time = '$_SESSION[bruteforce_t]' WHERE login = 'dd'"); exit("попробовать через 9 секунд"); }
ну, например, ты не учел такой момент, что бот может не поддерживать сессии ибо не поддерживает куки.
а что с этим куском кода делать? он не работает... удалить? пока я учусь.. не могуж я сайт отключить , пока не научусь защищаться от перебора... --- Добавлено --- да, я знаю... это я для теста поставил... но не работает...
@viktor72 от перебора защитится? А паузу сделать не вариант? Например после трёх не верных вводов сказать иди нафиг конкретному посетителю, например на 10 секунд.
@artoodetoo как вариант по ip. --- Добавлено --- @artoodetoo но вообще мне плевать на подбор. Подбором подобрать пароль например 53Kj#10l9T будет ну очень проблематично. А если вдруг у какого - то балбеса пароль qwerty123 " то сори чувак ты сам виноват". Уже не для кого не секрет что пароль должен состоять из букв и цифр, в нижнем и верхнем регистре, и множество сервисов именно его и использует, и запрещает ввод пароля без разного регистра, и меньше 6-8 символов. А уже вообще поднималась тема на форуме. И я писал что самое оно - это авторизация через телефон. То бишь через смс. Тебе выдаётся разовый пас на вход, который действует секунд 300. Ты вошёл он исчез. А в системе уже по сессии определяется. Я даже где - то встречал что пас на мыло присылается, разовый, но это не удобно.
так если перебором занимается не сам хакер а его программа... перебирая варианты с большой скоростью... если от этого не защитится, то взломается любой пароль... в чём я не прав? --- Добавлено --- вообщето в коде, который я выставил выше задумана задержка на 9 секунд после 3 попыток... но оно не работает. вот я и спрашиваю, где ошибка?
Как реализовать задержку после трех попыток, а после пяти - увеличить. И чтобы через час после последнего запроса всё скидывалось.
вообщето в коде, который я выставил выше задумана задержка на 9 секунд после 3 сделал . получилось. нашел тоже что у меня на другом форуме http://www.cyberforum.ru/php-beginners/thread1789880.html#post9489440 Но есть ньюансы
если можете, помогите с новой темой . не могу разобраться как сохранять картинки во время редактирования....https://php.ru/forum/threads/redaktirovanie-ne-soxranjajutsja-kartinki.59766/#post-483189