Проверка, изменил ли пользователь значение cookie, вручную - PullRequest
9 голосов
/ 27 июля 2011

Я занят системой входа в систему для моего проекта.

Просто для дополнительного шага к безопасности. Как я могу проверить / определить, изменил ли пользователь вручную значение cookie?

Есть ли простой способ сделать это?Или я должен установить дополнительную переменную Session и сопоставить ее с этим?С учетом вышесказанного, можно ли браузером отслеживать нормальную сессию ASP.Net?И для просмотра пользователю?

Спасибо.

Ответы [ 4 ]

10 голосов
/ 27 июля 2011

Вы можете добавить цифровую подпись к значению cookie и проверить подпись, когда будете читать ее обратно.Таким образом, если значение cookie будет изменено, оно будет очень очевидным.

private string sign(string hashStr, byte[] secret) 
{
    // Compute the signature hash
    HMACSHA1 mac = new HMACSHA1(secret);
    byte[] hashBytes = Encoding.UTF8.GetBytes(hashStr);
    mac.TransformFinalBlock(hashBytes, 0, hashBytes.Length);
    byte[] hashData = mac.Hash;

    // Encode the hash in Base64.
    string hashOut = Convert.ToBase64String(hashData);

    return hashOut;
}

Редактировать: Исправлен кодировщик, так что он явно UTF-8.

Каккак правило, вы должны также обязательно добавить соль в строку перед вызовом, см .: Безопасный хеш и соль для паролей PHP

2 голосов
/ 27 июля 2011

Если вам приходится обрабатывать такую ​​конфиденциальную информацию, я бы посоветовал вам не хранить ее в пользовательских файлах cookie.Вместо этого используйте sessions для хранения таких значений, поскольку пользователь не сможет подделать такие значения.

1 голос
/ 27 июля 2011

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

0 голосов
/ 27 июля 2011

Добавьте в файл cookie вторую переменную, которая уникальна для первого значения.

При Page_Load сравните два значения с базой данных.

Если они не соответствуют записи, затем удалите cookie.

...