检查用户是否已手动更改cookie值

Mar*_*ein 9 c# asp.net cookies session-cookies

我正忙着为我的项目登录系统.

只是为了安全的额外步骤..如何检查/检测用户是否手动更改了cookie值?

有一些简单的方法吗?或者我是否必须设置一个额外的Session变量并将其与之匹配?有了这个说法,浏览器是否可以追溯正常的ASP.Net会话?并且可以向用户查看?

谢谢.

Bil*_*sky 10

您可以将数字签名附加到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;
}
Run Code Online (Sandbox Code Playgroud)

编辑:修复编码器,使其显式为UTF-8.

像往常一样,在调用之前,您还应该确保在字符串中添加一些salt,请参阅: PHP密码的安全散列和salt