簡體   English   中英

加密ASP.NET中的cookie

[英]Encrypt cookies in ASP.NET

我想加密ASP.NET中的cookie。

我已經按照本文中的方法進行了操作 ,但它的缺點是在內部方法上使用了反射。 這導致它在代碼審查中被標記 - 由於內部實現可能會發生變化,因此無法面向未來。

是否有一種具有相同功能的方法,不需要對內部方法使用加密?

我正在使用.NET Framework 3.5 SP1(假設我無法更改框架版本)

你不需要再自己動手了。

.Net 4.5具有MachineKey.Protect()MachineKey.Unprotect()

System.Web.Security.MachineKey

.Net 4.0具有MachineKey.Encode()MachineKey.Decode() 您應該將MachineKeyProtection設置為'All'。 這些現在已經過時了,如果你有4.5,你應該使用較新的。

請注意,如果您嘗試在控制台應用程序而不是ASP.Net中使用它們,則每次重啟應用程序時都會生成新密鑰。 我只是快速檢查了它,但在ILSpy中,如果缺少相應的app.setting,它看起來會生成自己的默認值。

我找不到nonASP.Net等價物。

為什么不使用System.Security.Cryptography中的加密來加密和解密cookie名稱和敏感時的值? 您可以編寫一些實用程序函數來輕松管理它。 示例效用函數:

private static void SetEncryptedCookie(string name, string value)
{
    var encryptName = SomeEncryptionMethod(name);
    Response.Cookies[encryptName].Value = SomeEncryptionMethod(value);
    //set other cookie properties here, expiry &c.
    //Response.Cookies[encryptName].Expires = ...
}

private static string GetEncryptedCookie(string name)
{
    //you'll want some checks/exception handling around this
    return SomeDecryptionMethod(
               Response.Cookies[SomeDecryptionMethod(name)].Value);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM