система куки - безопасность - PullRequest
1 голос
/ 04 ноября 2011

У меня есть метод, в котором я проверяю правильность имени пользователя и пароля (хэш + соль).После этого, и если у пользователя есть доступ, я делаю:

 if(isset($remember) && $remember == '1') {
        setcookie('email', $email,  time()+60*60*24*100);
    }
    else {
        setcookie('email', $email, time()+3600);
    }

Мой вопрос касается вопросов безопасности.приведенный выше код небезопасен?Нужно что-то вроде подписи?

например:

$user_email = $email;
$hash = sha1(rand(0,500).microtime());
$signature = sha1($hash . $user_email); 
$cookie = base64_encode($signature . "-" . $hash . "-" . $user_email);
setcookie('authentication', $cookie); 

Что вы думаете?

Ответы [ 3 ]

3 голосов
/ 04 ноября 2011

Вам необходимо проверить случайный сгенерированный хеш или что-то на стороне сервера.Пользователь может корректировать данные по своему желанию и отправлять все обратно для данных cookie.С вашей текущей схемой, кажется, было бы легко указать, какого пользователя они хотят.Страшно.

Когда они входят в систему, вставьте ключ аутентификации в базу данных вместе с IP, UserAgent и Expiration.Если они пытаются использовать ваш сайт, а IP-адрес или UserAgent отличаются, или срок действия ключа истек, принудительно выйдите из системы.

1 голос
/ 04 ноября 2011

Время анекдота: примерно в 2002 году я смотрел на свалку пакетов из сети моей школы и говорил им, что им нужно исправить свои оценки, посещаемость, информацию о студентах, систему «все под солнцем».Они настроили его таким образом, что после аутентификации пользователя система установила cookie-файл только с именем пользователя и окончанием сеанса.Я запустил браузер, выбрал имя пользователя (имя, фамилию) и установил его как cookie.У меня был доступ.

То, что они должны были сделать, это установить случайное число 128 и отслеживать его на сервере (номер, соответствующий пользователь, значение времени ожидания).

См. Также

0 голосов
/ 04 ноября 2011

Чтобы пользователь не мог изменить значения файлов cookie, вы можете использовать этот класс , найденный в Интернете. Он запишет cookie-файл, содержащий хэш, соответствующий «сумме» всех значений cookie-файлов, поэтому, если вы измените данные, хеш-код будет неправильным.

Требуются только три метода: Cookie::set(cookie_name, value), Cookie::get(cookie_name) и Cookie::reset().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...