Предотвратить редактирование файлов cookie - PullRequest
0 голосов
/ 28 января 2012

Есть много способов, которыми пользователи могут редактировать содержимое своих файлов cookie.На моем веб-сайте у меня есть файл cookie под названием «пользователь», в котором хранится имя пользователя, с которым пользователь в данный момент вошел.Тем не менее, я только что заметил, что этот файл cookie можно редактировать для входа в любую учетную запись.Есть ли какой-нибудь код или параметр, который я могу добавить в функцию setcookie (), которая не позволяет пользователям редактировать определенный файл cookie?

Ответы [ 6 ]

3 голосов
/ 29 января 2012

Нет, в конечном счете, cookie сохраняется на компьютере клиента, и клиент имеет к нему доступ.Я бы предложил хранить хэш вместо имени учетной записи пользователя.Возьмите хеш из cookie и извлеките имя пользователя из своего хранилища данных. Если хеш был обработан, вы не получите правильное имя пользователя и знаете, что вам нужно, чтобы он снова вошел в систему и создал действительный хеш в cookie.1001 *

2 голосов
/ 29 января 2012

Есть ли какой-либо код или параметр, который я могу добавить в функцию setcookie (), что мешает пользователям редактировать определенный файл cookie?

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

0 голосов
/ 29 января 2012

Что вы можете сделать, это выпустить cookie, который по сути является токеном. Вот что я сделал в прошлом

function get_token(){
    $token = md5(date("l").$_SERVER['USER_AGENT'].date("d"));
    return $token;
}

$token = get_token();
setcookie($token);

Тогда, когда вы хотите проверить это:

$token = get_token();
if($token == $_COOKIE['token']){
    echo 'show the good page here';
} else {
    echo 'user is not authenticated.. display login page';
}

Пока клиент передает пользовательский агент, токен будет приниматься до смены дня.

0 голосов
/ 29 января 2012

Вы не можете запретить клиенту изменять cookie-файл (в конце концов, он сохраняется на своем компьютере).

Что вы можете сделать, это проверить cookie-файл на вашей стороне, чтобы убедиться, что он действителен и исправен.

Мне нравится отправлять 2 куки-файла.

  1. Имя пользователя, не зашифровано.
  2. Имя пользователя + пароль + произвольная соль - все зашифровано.

Таким образом, вы можете проверить своего пользователя и не беспокоиться о том, что люди меняют его (потому что им нужно знать пароль + случайную соль + функцию хеширования).

0 голосов
/ 29 января 2012

Нет, нет.Файл cookie - это, по сути, текстовый файл на клиентском компьютере, и всегда есть какой-то способ отредактировать его.

Но есть простое решение вашей проблемы: сохраняйте больше информации в файлах cookie.Например, вы можете сохранить хэш-код (например, md5() или sha1()) пароля во втором файле cookie, а затем проверить, соответствует ли этот хэш пользователю, которого клиент "притворяется" равным

0 голосов
/ 29 января 2012

Нет.Cookie хранится на компьютере пользователя, обычно в текстовом файле или чем-то подобном.Лучше не хранить информацию о пользователях в файлах cookie, но хранить эту информацию в сеансах.Сессии хранятся на сервере, поэтому пользователь не может их редактировать.

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