Mirovan
11.11.2006, 16:09
Есть некий скрипт, с помощью которого юзер авторизуется на сайте. После этого он должен получить доступ к персональным данным.
В начале я использовал сессии, но тестирую обнаружил что без труда можно подделать сессию. Как избежать этой ситуации ?
Для первоначальной защиты использую:
// если пользователь пришёл с любой страницы
//нашего сайта, то он наш, иначе выдаем ему ошибку
//$_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 - формируется браузером. Поэтому защита здесь всего лишь мнимая.
Каким способом проверять переходы пользователя по другим страницам сайта используя сессии, так чтобы это было безопасно?
т.е. к примеру, я зарегистрировал сессию:
session_start();
$_SESSION['login']="user1";
при переходе на другую страницу проверяю
session_start();
if (empty($_SESSION['login'])) {
exit;
} else {
//Доступ к персональным данным
}
Сессию можно подделать прийдя с другого сайта вместе с переменной $_SESSION['login']
КАк все таки быть, как должно выглядеть проверка на юзера?
В начале я использовал сессии, но тестирую обнаружил что без труда можно подделать сессию. Как избежать этой ситуации ?
Для первоначальной защиты использую:
// если пользователь пришёл с любой страницы
//нашего сайта, то он наш, иначе выдаем ему ошибку
//$_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 - формируется браузером. Поэтому защита здесь всего лишь мнимая.
Каким способом проверять переходы пользователя по другим страницам сайта используя сессии, так чтобы это было безопасно?
т.е. к примеру, я зарегистрировал сессию:
session_start();
$_SESSION['login']="user1";
при переходе на другую страницу проверяю
session_start();
if (empty($_SESSION['login'])) {
exit;
} else {
//Доступ к персональным данным
}
Сессию можно подделать прийдя с другого сайта вместе с переменной $_SESSION['login']
КАк все таки быть, как должно выглядеть проверка на юзера?