2013-12-02 3 views
0

, поэтому я работал над функцией запоминания для моего сайта.Шифрование даты/времени, а также создание токена

В настоящее время он работает, но я использую базовые данные, а не шифрование, поскольку я хотел точно знать, что происходит во время обучения.

Я использую файл cookie, а затем db, который хранит одни и те же данные, а затем выполняется проверка. Новая запись cookie/db выполняется при каждом входе в систему.

Так в настоящее время это было бы печенье: (строка для идентификатора является идентификатором, это печенье устанавливается в процессе авторизации)

date_default_timezone_set('Europe/London'); 
$token = '1'; 
$cookiedate = date('d-m-y h:i:s a', time()); 
$cookie_val = $row['id'] . ':' . $token . ':' . $cookiedate; 

setcookie (
"cookie", 
$cookie_val, 
time() + (10 * 365 * 24 * 60 * 60), 
'/' 
); 

Что бы мой следующий шаг здесь с точкой зрения некоторых encpytion? Также я не совсем уверен в токене, должен ли он быть случайным хешем символов, просто используемым в качестве дополнительного метода безопасности?

сайт не будет массовым, и, войдя в учетную запись someones, вы не сможете нанести какой-либо ущерб, так как чувствительные страницы защищены паролем.

+0

Вы можете создать буксир печенья cookie A: что вам нужно внутри cookie B: для бывших. sha1 (md5 (что вам нужно)) Затем, прочитав, вы проверяете соответствие значений. Это позволит избежать изменения пользователем значений в файле cookie. – zeflex

+0

Почему вы храните дату в файле cookie? Почему это важно? –

ответ

1

Улучшение на то, что вы должны были бы быть:

  1. Создания случайной фишки, скажем, 20 символов, например:

    bin2hex(openssl_random_pseudo_bytes(10)); 
    
  2. магазина этого маркер вместе с идентификатором пользователя (и другие соответствующие данные) в вашей базе данных.

  3. Введите значение маркера в файл cookie.

Это предотвращает несколько вопросов:

  1. Маркер данные известны лишь на стороне сервера, клиент получает только ключ.

  2. Пользователь может аннулировать токены «помнить меня», чтобы предотвратить несанкционированный доступ в будущем.

  3. Нарушение содержимого файла cookie приведет к неизвестному значению токена, поэтому доступ будет отклонен.

После успешного входа в систему вы создадите новый токен.

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

+0

Я извлекал значения из файла cookie, а затем регистрируются пользователем с ними. Вы говорите, что было бы лучше просто сохранить токен, а затем иметь в БД: идентификатор пользователя, дату + время, токен. Затем извлеките токен из файла cookie, проверьте его на соответствие, а затем вытащите детали матча из базы данных для входа в систему пользователя? – Lovelock

+0

@ user2921557 Правильно. После входа в систему вы создаете новый токен. –

+0

хорошо, я вижу. будет работать лучше в долгосрочной перспективе, проще. Не должно сильно меняться в моем текущем коде. hash_hmac() выглядит интересным. Не могу остричь голову, но плохо прочитал. Большое спасибо! Его здорово узнать лучшие способы делать вещи – Lovelock

0

Почему бы вам просто не использовать ваш файл cookie с помощью md5().

+1

md5 is ** NOT ** шифрование. Это хэш. –

+0

Я бы сделал это так, как бы это было быстро, но я ничего не узнаю.Это может не стать массовым веб-сайтом, но для меня получение безопасности, безопасности будет только помогать и научить меня в этом процессе. – Lovelock

+0

@Marc B: Спасибо, исправлено! –

Смежные вопросы