2009-07-07 11 views

उत्तर

10

आपको शायद यह नहीं करना चाहिए। यदि कुकी संवेदनशील है, तो इसे केवल सर्वर पर संग्रहीत करें।

यदि आपको वास्तव में आवश्यकता है, तो ऐसा करने के कई तरीके हैं। आप सुनिश्चित करें कि आपके प्लेन यूनिकोड का उपयोग कभी नहीं होगा, तो आप बजाय का उपयोग कर सकते हैं, तो

var plainBytes = Encoding.UTF8.GetBytes(plaintext); 

;: सबसे पहले, आप इस तरह, एक बाइट सरणी के लिए सादा पाठ परिवर्तित करने की आवश्यकता होगी इसके परिणामस्वरूप एक छोटी कुकी होगी)।

फिर, आपको इसे एन्क्रिप्ट करना होगा। ऐसा करने का सबसे आसान तरीका डीपीएपीआई का उपयोग करना है, इस तरह। (सबसे पहले, System.Security.dll का संदर्भ जोड़ें)। ध्यान दें कि यह एक सर्वर फार्म पर काम नहीं करेगा।

var encryptedBytes = ProtectedData.Protect(plainBytes, null, DataProtectionScope.CurrentUser); 

अंत में, आपको इसे वापस पाठ में परिवर्तित करने की आवश्यकता है ताकि आप इसे कुकी में रख सकें। यह सबसे अच्छा, Base64 में किया इस तरह है:

Response.AddCookie("MyEncryptedCookie", Convert.ToBase64String(encryptedBytes)); 

कुकी को डिक्रिप्ट करने के लिए, अगर आप इस तरह इन चरणों का उल्टा करने के लिए, की आवश्यकता होगी:

var encryptedBytes = Convert.FromBase64String(Request.Cookies["MyEncryptedCookie"].Value); 
var decryptedBytes = ProtectedData.Unprotect(encryptedBytes , null, DataProtectionScope.CurrentUser); 
var plaintext = Encoding.UTF8.GetString(decryptedBytes); 

ध्यान दें कि कुकी हो जाएगा छोटे सादे पाठों के लिए भी बहुत बड़ा।

यदि आप इसे सर्वर फार्म पर उपयोग करना चाहते हैं, तो आप एईएस का उपयोग कर सकते हैं; System.Security.Cryptography.RijndaelManaged पर देखें।

+0

धन्यवाद स्लाक्स! मैं रिजेंडेल मैनेज्ड जैसे कुछ का उपयोग करूंगा! :-) – AndreMiranda

+0

क्या कोई कारण है कि आप इसे सत्र स्थिति में संग्रहीत नहीं कर सकते हैं? – SLaks

+0

मुझे पता है कि यह जवाब वास्तव में पुराना है इसलिए मैं गलत हो सकता हूं, लेकिन मैंने अभी 'Response.AddCookie (...)' की कोशिश की और मुझे एक त्रुटि मिली। इसके बजाय 'Response.Cookies.Add (HttpCookie)' का उपयोग करें – Ortund

2

सबसे आसान तरीका इसे एन्क्रिप्ट नहीं करना होगा! सर्वर पर मानों (सामग्री) को देखने के लिए बस कुकी आईडी (प्लस एक नमक) का उपयोग करें।

-2

ऐसा करने का सबसे सुरक्षित तरीका कुकीज़ के बजाय ASP.Net सत्र स्थिति का उपयोग करना है। चूंकि सत्र स्थिति क्लाइंट को कभी नहीं भेजी जाती है, इसलिए आपके पास चिंता करने की कोई बात नहीं होगी।

संबंधित मुद्दे

 संबंधित मुद्दे