блокирование логина при попытке его использования с 2-х разных IP

Sophia

Новичок
ребята, спасибо за столь живой интерес к моей теме!

но мне все-таки, наверное, не нужен супер-скрипт, который предусмотрит почти все, что может произойти - среди всех моих знакомых (включая тех, кого я точно не хочу видеть на сайте) нет ни одного человека с такими знаниями в программировании как у большинства посетителей этого форума (сейчас в институте дальше Excel и Word не уходят... максимум еще базы данных) и особого риска взлома, наверное, нет (просто передача пароля другому лицу)

я думаю, что мне было бы достаточно все-таки очень простенького срипта


я добавила скрипт, который хранит логины в базе данных, ведет лог заходов и может переадресовывать пользователей на разные страницы в зависимости от логина (мне кажется так можно временно заблокировать логин - изменить страницу на какую-нибудь banned.php, если будет попытка захода под тем же логином с другого IP в течение 12 часов...)
 

dimagolov

Новичок
Sophia
PHP:
session_cache_limiter();

session_start();

//clear session variables
session_unset();
Что это и зачем?
Если то, что Вы выложили это скрипт обработки авторизации, то где SELECT которым проверяется собственно логин и пароль?
 

WP

^_^
baev, а что там?
Sophia, я плохо понимаю тебя... ты спросила совета как защититься, я дал исчерпывающий ответ, теперь ты говоришь что это так называемый "супер-скрипт", и тебе нужно проще. Скажи, что ты хочешь получить от форума?
Взлом мы вообще тут не рассматриваем, это отдельная тема совершенно, я рассмотрел аспекты защиты от утечки пароля.
Случай когда хозяин аккаунта намеренно передает данные третьим лицам рассматривать не стоит из соображений здравого смысла, т.к. всё равно другое лицо сможет воспользоваться доступом (например сесть за компьютер где открыт сайт).

1. Безопасность сервера (защита от взлома). Ее, думаю, мы рассматривать не будем т.к. тема слишком широка.
2. Защита от утечки информации. Уже мной подробно рассмотрена.
3. Случай передачи данных другому лицу. Не рассматриваем т.к. защиту сделать невозможно.
 

Alexandre

PHPПенсионер
Но в общем случае так делать нельзя, потому что сейчас у большинства IP динамические и при обрыве-востановлении конекта ...
Я думаю в этом случае моджо
вычислить IP - перевести его в int, далее разница между старым и новым IP не должна превышать более чем 256(128).
Думаю - покатит.

-~{}~ 02.08.07 11:33:

заблокировать логин - изменить страницу на какую-нибудь banned.php, если будет попытка захода под тем же логином с другого IP в течение 12 часов...
Софи, представь себе ситуацию, что твой сайт является моим самым любимым сайтом. Я провожу на работе там какую-то часть времени, потом я прихожу домой, ужинаю, и так как я фанат твоего сайта, не докончив ужин, еще с тарелкой горячей картошки, включаю комп и вновь лезу в интернет и захожу на товй сайт. О Боже!!!! и что же я увижу: banned.php??
тогда я обижусь и не буду уже таким ярым фанатом твоего сайта.

Думаю, 12 часов - это жестко!!!
 

Wicked

Новичок
Alexandre
Для 1.1.1.255 мы получим, что возможен 1.1.2.254 ? :) Ты про маски IP-адресов слышал когда-нибудь?
 

Sophia

Новичок
Автор оригинала: WP
baev, а что там?
Sophia, я плохо понимаю тебя... ты спросила совета как защититься, я дал исчерпывающий ответ, теперь ты говоришь что это так называемый "супер-скрипт", и тебе нужно проще. Скажи, что ты хочешь получить от форума?
Взлом мы вообще тут не рассматриваем, это отдельная тема совершенно, я рассмотрел аспекты защиты от утечки пароля.
Случай когда хозяин аккаунта намеренно передает данные третьим лицам рассматривать не стоит из соображений здравого смысла, т.к. всё равно другое лицо сможет воспользоваться доступом (например сесть за компьютер где открыт сайт).

1. Безопасность сервера (защита от взлома). Ее, думаю, мы рассматривать не будем т.к. тема слишком широка.
2. Защита от утечки информации. Уже мной подробно рассмотрена.
3. Случай передачи данных другому лицу. Не рассматриваем т.к. защиту сделать невозможно.
когда я начинала эту тему у меня почти ничего не было готово (не было даже лога IP адресов)...

а теперь мне осталось только сделать одну вещь:

если в течении 12 часов логин используется со второго IP, то сразу изменяется соответствующее поле redirect таблицы authorize

например, у логина test в соответствующем ему поле redirect было значение http://www.site.ru/secret.php, которое надо будет заменить на http://www.site.ru/banned.php и посетитель не сможет зайти на сайт под другим IP...


помогите, пожалуйста, мне это осуществить

мне осталась часть скрипта, которая будет:

- проверять время предыдущего захода,
- сверять IP
- если нужно, менять поле redirect на http://www.site.ru/banned.php :rolleyes: :rolleyes: :rolleyes:
 

Alexandre

PHPПенсионер
Wickedво первых - не считай меня за идиота, наверно за 10 лет работы в ИТи кое-что мог услышать и возможно побольше твоего...

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

третье - я даю идеи, которые надо адаптировать под конкретные условия...
я , а впрочем так же как и ты - не телепат, знать все тонкости проекта Софи, по этому даю не готовые решения, а идеи, которые нужно прорабатывать... кстати Мою идею очень просто можно доработать, лишь выполнив операцию OR или сдвиг если ты правда, знаком с понятием Двоичная арифметика. Ну и еще ест прокси, по этому, очевидно - у посетителя всегда будет внешний ИПи - одним и темже, вне зависимости от его внутреннего. Мои идея работает только для внутренней сетки.

мне осталась часть скрипта, которая будет:

- проверять время предыдущего захода,
- сверять IP
- если нужно, менять поле redirect на http://www.site.ru/banned.php
1) при логине пишем в БД время захода (лучше в формате int) и IP (естественно в другое поле)
2) при следующем логине делаем запрос
SELECT lastlogin,Ip FROM user WHERE login=... AND psw= ....
далее, если есть результат (т.е. логин и пароль правильные), то сравниваем значения полей IP и реального Ипи, и если не совпадают, то сравниваем значение функции time() и значение поля lastlogin
для 12 часов оно не должно превышать 12 х 60 х 60

вот и все! редирект делается разными способами, от включения скрипта инклудом до перенаправлением браузера. Второе делается выводом строки Header('Location: <полный урл>')
 
Сверху