[英]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.