ANTICHAT — форум по информационной безопасности, OSINT и технологиям
ANTICHAT — русскоязычное сообщество по безопасности, OSINT и программированию.
Форум ранее работал на доменах antichat.ru, antichat.com и antichat.club,
и теперь снова доступен на новом адресе —
forum.antichat.xyz.
Форум восстановлен и продолжает развитие: доступны архивные темы, добавляются новые обсуждения и материалы.
⚠️ Старые аккаунты восстановить невозможно — необходимо зарегистрироваться заново.
 |
Авторизация на Php и защита сессий |

11.11.2006, 16:09
|
|
Познающий
Регистрация: 10.04.2005
Сообщений: 49
Провел на форуме: 108176
Репутация:
12
|
|
Авторизация на Php и защита сессий
Есть некий скрипт, с помощью которого юзер авторизуется на сайте. После этого он должен получить доступ к персональным данным.
В начале я использовал сессии, но тестирую обнаружил что без труда можно подделать сессию. Как избежать этой ситуации ?
Для первоначальной защиты использую:
PHP код:
// если пользователь пришёл с любой страницы
//нашего сайта, то он наш, иначе выдаем ему ошибку
//$_SITE_PATCH - url сайта
if(!eregi("^$_SITE_PATCH",$HTTP_REFERER)){
echo("Авторизация производится только со страницы <a href=\"index.php?show=enter\">".$_SITE_PATCH."index.php?show=enter</a>");
exit;
}
Тем не менее $HTTP_REFERER - формируется браузером. Поэтому защита здесь всего лишь мнимая.
Каким способом проверять переходы пользователя по другим страницам сайта используя сессии, так чтобы это было безопасно?
т.е. к примеру, я зарегистрировал сессию:
PHP код:
session_start();
$_SESSION['login']="user1";
при переходе на другую страницу проверяю
session_start();
if (empty($_SESSION['login'])) {
exit;
} else {
//Доступ к персональным данным
}
Сессию можно подделать прийдя с другого сайта вместе с переменной $_SESSION['login']
КАк все таки быть, как должно выглядеть проверка на юзера?
|
|
|

11.11.2006, 16:11
|
|
Участник форума
Регистрация: 25.07.2005
Сообщений: 246
Провел на форуме: 457850
Репутация:
174
|
|
Привязывай сессию к айпи.
Юзай тег [php] в сообщениях.
$HTTP_REFERER надо брать так: $_SERVER['HTTP_REFERER']
|
|
|

11.11.2006, 16:16
|
|
Познающий
Регистрация: 10.04.2005
Сообщений: 49
Провел на форуме: 108176
Репутация:
12
|
|
Есть конечно выриант проверки соответствия какой нить случайной переменной сессии Sid присвоенной для определённого логина, но опять же вопрос где хранить её? если в базе, то как её оттуда удалить , по истечению какого времени
|
|
|

11.11.2006, 16:31
|
|
Banned
Регистрация: 06.06.2006
Сообщений: 944
Провел на форуме: 3986705
Репутация:
1403
|
|
Юзай кукисы и все =)
|
|
|

11.11.2006, 16:52
|
|
Познающий
Регистрация: 10.04.2005
Сообщений: 49
Провел на форуме: 108176
Репутация:
12
|
|
Отыскал хорошую статейку по сессиями др. - http://php.spb.ru/php/session.html
Не найдя оптимального решения, пришлось юзать Кукисы  (
|
|
|

11.11.2006, 17:15
|
|
Познающий
Регистрация: 26.11.2005
Сообщений: 32
Провел на форуме: 47872
Репутация:
20
|
|
Не совсем ясно, что значит подделать сессию. Подделать сессию нельзя, все данные сессии хранятся на сервере. Можно как-то угадать (хм, сомнтиельно) или угнать номер сессии и использовать ее, но это представляет угрозу только в случае если сессия не привязана к IP или если привязана, но оба пользователя находятся за одним шлюзом, т.е. имеют одинаковый внешний IP адрес
Сессию можно подделать прийдя с другого сайта вместе с переменной $_SESSION['login']
Не понял смысл вот этой фразы.
С какого сайта к вам зашли Вы не сможете проверить 100%но никаким способом. Вы можете проверять referer или насовать каких-то умных javascript'ов против подделки http запроса, однако строить на этом какую-либо защиту бессмысленно. Хотя я даже не понял защиту чего именно Вы хотите организовать проверкой реферера
|
|
|

04.09.2007, 17:13
|
|
Познающий
Регистрация: 10.04.2005
Сообщений: 49
Провел на форуме: 108176
Репутация:
12
|
|
Хех, прочитал что писал 2 года назад, ну я дал
Аж смешно, подделать сессию, извините, что ламерил, хотя, все мы такие когда то были 
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|