|
|
|
| Доброе время суток.
Подскажите пожалуйсто. У меня сайт. Uid пользователя передается по ссылке (,,,ex.php?uid=1Eb23..41), uid временный создается при авторизации. Любой человек может скопировать адресную строку и войти под uid-ом зарегистрировавшегося пользователя. Правильно ли будет использовав $_SERVER['HTTP_REFERER'] отсекать такие действия? | |
|
|
|
|
|
|
|
для: Olga_Soft
(17.08.2007 в 10:14)
| | Неправильно. Лучше сверять IP и/или User-Agent. | |
|
|
|
|
|
|
|
для: Unkind
(17.08.2007 в 10:19)
| | Спасибо.
IP такая штука, которая может быть динамической. Но все равно спасибо. | |
|
|
|
|
|
|
|
для: Olga_Soft
(17.08.2007 в 10:23)
| | Вообще-то можно и подсеть проверять. | |
|
|
|
|
|
|
|
для: Unkind
(17.08.2007 в 10:29)
| | А чем полх вариант с $_SERVER['HTTP_REFERER'] ?
Вот пример поего кода:
function is_user($tmp_key)
{
if(empty($tmp_key)){return false;}
$user = $this->get_user_key($tmp_key);
if(isset($_SERVER['HTTP_REFERER']))
{
$my_dir = substr($_SERVER['HTTP_REFERER'], strrpos($_SERVER['HTTP_REFERER'], '/'), // Проверяем откуда пришел
strlen($_SERVER['HTTP_REFERER']));
$self = substr($_SERVER['PHP_SELF'], strrpos($_SERVER['PHP_SELF'], '/')+1, strlen($_SERVER['PHP_SELF'])); // Проверяем себя
if(ereg('\?', $my_dir))
{
$my_dir = substr($my_dir, 0, strpos($my_dir, '?'));
}
if(strcmp(($this->url."$my_dir"), ($this->url."/$self"))==0)
{
if(isset($user['tmp_key']) && $user['tmp_key'] == $tmp_key){return true;}
}
}
return false;
}
|
| |
|
|
|
|
|
|
|
для: Olga_Soft
(17.08.2007 в 10:43)
| | Тем, что он может не передаваться как из-за настроек браузера, так и просто нельзя будет вбить адрес в адресной строке самому пользователю. | |
|
|
|
|
|
|
|
для: Unkind
(17.08.2007 в 11:48)
| | Понятно. Спасибо. | |
|
|
|