Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   Авторизация на Php и защита сессий (https://forum.antichat.xyz/showthread.php?t=27002)

Mirovan 11.11.2006 16:09

Авторизация на 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']

КАк все таки быть, как должно выглядеть проверка на юзера?

SMiX 11.11.2006 16:11

Привязывай сессию к айпи.
Юзай тег [php] в сообщениях.
$HTTP_REFERER надо брать так: $_SERVER['HTTP_REFERER']

Mirovan 11.11.2006 16:16

Есть конечно выриант проверки соответствия какой нить случайной переменной сессии Sid присвоенной для определённого логина, но опять же вопрос где хранить её? если в базе, то как её оттуда удалить , по истечению какого времени

bul.666 11.11.2006 16:31

Юзай кукисы и все =)

Mirovan 11.11.2006 16:52

Отыскал хорошую статейку по сессиями др. - http://php.spb.ru/php/session.html

Не найдя оптимального решения, пришлось юзать Кукисы :((

Pochka 11.11.2006 17:15

Не совсем ясно, что значит подделать сессию. Подделать сессию нельзя, все данные сессии хранятся на сервере. Можно как-то угадать (хм, сомнтиельно) или угнать номер сессии и использовать ее, но это представляет угрозу только в случае если сессия не привязана к IP или если привязана, но оба пользователя находятся за одним шлюзом, т.е. имеют одинаковый внешний IP адрес

Цитата:

Сессию можно подделать прийдя с другого сайта вместе с переменной $_SESSION['login']
Не понял смысл вот этой фразы.

С какого сайта к вам зашли Вы не сможете проверить 100%но никаким способом. Вы можете проверять referer или насовать каких-то умных javascript'ов против подделки http запроса, однако строить на этом какую-либо защиту бессмысленно. Хотя я даже не понял защиту чего именно Вы хотите организовать проверкой реферера

Mirovan 04.09.2007 17:13

Хех, прочитал что писал 2 года назад, ну я дал :)

Аж смешно, подделать сессию, извините, что ламерил, хотя, все мы такие когда то были :)


Время: 19:47