सुरक्षित MVC
और C#
में पासवर्ड रीसेट लिंक बनाने के लिए आपको किस तरह से सुझाव मिलेगा? मेरा मतलब है, मैं यादृच्छिक टोकन बनाउंगा, है ना? उपयोगकर्ता को भेजने के लिए मैं इसे एन्कोड कैसे करूं? MD5 पर्याप्त है? क्या आप किसी अन्य सुरक्षित तरीके से जानते हैं?पासवर्ड रीसेट लिंक कैसे बनाएं?
उत्तर
मुझे नहीं लगता कि आपको इस उद्देश्य के लिए एन्क्रिप्टेड स्ट्रिंग की आवश्यकता है। मुझे लगता है कि GUID के साथ एक स्ट्रिंग बनाना पर्याप्त होगा।
string thatString=Guid.NewGuid("n").ToString();
उस विशेष उपयोगकर्ता खाते के विरुद्ध अपनी डीबी तालिका में सहेजें। उस उपयोगकर्ता के लिए एक लिंक बनाएं जिसमें यह स्ट्रिंग है और उन्हें भेजें। जब वे उस पर क्लिक करेंगे, तो यह उन्हें एक एक्शन विधि पर ले जाएगा और उन्हें आपके द्वारा संग्रहीत इस अस्थायी स्ट्रिंग से जुड़े संबंधित उपयोगकर्ता रिकॉर्ड मिलते हैं और उपयोगकर्ता को पासवर्ड अपडेट करने के लिए फॉर्म दिखाते हैं।
और यदि आपको कोई संदेह है कि क्या गिड अद्वितीय हैं, तो चेकआउट this।
अनोखा! = यादृच्छिक। [GUID को यादृच्छिक होने के लिए डिज़ाइन नहीं किया गया है।] (Http://blogs.msdn.com/b/ericlippert/archive/2012/05/07/guid-guide-part-three.aspx) वे अप्रत्याशित होने के लिए डिज़ाइन नहीं किए गए हैं । वे बस दोहराने के लिए डिजाइन किए गए हैं। – Servy
मैं इस दृष्टिकोण का भी उपयोग करता हूं, गुइड।यदि आप विशिष्टता से परेशान हैं, तो आप गीलेर की जांच कर सकते हैं कि यह डेटाबेस में पहले से मौजूद है। मैंने इस पर एक समयबद्धता भी निर्धारित की है (इसलिए लिंक केवल दो घंटों के लिए क्लिक करने योग्य है) ताकि टकराव पर और भी मौका सीमित हो। – Michel
System.Security.Cryptography.RandomNumberGenerator
का उपयोग करें जो एक क्रिप्टोग्राफिक-सुरक्षित आरएनजी है। बस उस ईमेल में शामिल करें और इसे बाद में पुनर्प्राप्ति के लिए अपने डीबी में स्टोर करें। मुझे यह हैशिंग में बिंदु नहीं दिख रहा है।
यह यहाँ दस्तावेज़ीकरण किया गया है: http://msdn.microsoft.com/en-us/library/system.security.cryptography.randomnumbergenerator.aspx
using System.Security.Cryptography;
using(RandomNumberGenerator rng = new RandomNumberGenerator()) {
Byte[] bytes = new Byte[8];
rng.GetBytes(bytes);
String sendThisInEmailAndStoreInDB = Convert.ToBase64String(bytes);
}
एक यादृच्छिक संख्या का उपयोग कर की तुलना में बेहतर तो हैश नमक है। https://stackoverflow.com/a/2138588/1026459
मूल रूप से सिर्फ एक पासवर्ड बनाने:
@using System.Security.Cryptography;
static byte[] GenerateSaltedHash(byte[] plainText, byte[] salt)
{
HashAlgorithm algorithm = new SHA256Managed();
byte[] plainTextWithSaltBytes =
new byte[plainText.Length + salt.Length];
for (int i = 0; i < plainText.Length; i++)
{
plainTextWithSaltBytes[i] = plainText[i];
}
for (int i = 0; i < salt.Length; i++)
{
plainTextWithSaltBytes[plainText.Length + i] = salt[i];
}
return algorithm.ComputeHash(plainTextWithSaltBytes);
}
आप अपने जवाब यहाँ पर अधिक देख सकते हैं: यहाँ एक सुरक्षा गुरु से एक टुकड़ा है। नमक और हैश यह यहाँ है, और उसके बाद उपयोगकर्ता की वापसी जब इसकी तुलना करें। जुड़े हुए उत्तर में तुलनात्मक विधि और नमक/हैशिंग की गहराई से स्पष्टीकरण में भी अधिक शामिल है।
दरअसल, मैं इनमें से कोई भी नहीं करता।
मुझे एक ही समस्या का सामना करना पड़ा और मैंने रीसेट टोकन भेजने का फैसला किया और ऐसा करने के लिए मैंने एक जेडब्ल्यूटी टोकन का उपयोग किया।
उस टोकन (जो एन्क्रिप्टेड है) पर आप एक समाप्ति सेट कर सकते हैं। बस ग्राहक ईमेल पते सहित एक रीसेट टोकन बनाएं और फिर अपनी समाप्ति सेट करें, इसे अपने डेटाबेस में (अपने एन्क्रिप्टेड रूप में) स्टोर करें और इसे एन्कोड करें और यूआरएल पैरामीटर के रूप में लिंक पर रखें।
फिर जब आप अनुरोध प्राप्त करते हैं तो आप टोकन सत्यापित कर सकते हैं सत्यापित कर सकते हैं। इसके बाद आप इसे ईमेल पते पर अनपैक कर सकते हैं और फिर उन्हें अपने खाते के लिए अपने सुरक्षित पासवर्ड रीसेट क्षेत्र में निर्देशित करने के लिए आगे बढ़ सकते हैं। (आप उपयोगकर्ता नाम आदि जैसे अन्य दावों को शामिल कर सकते हैं)।
जेडब्ल्यूटी implemnetation आप टाइप कर सकते Install-Package JWT
इस टोकन के डिबगिंग के साथ आप क्या करेंगे? इस तरह के टोकन में सभी जानकारी निकालना संभव है: ईमेल, समाप्ति तिथि ... –
- 1. रीसेट पासवर्ड
- 2. अस्थायी पासवर्ड ईमेल करके पासवर्ड रीसेट
- 3. Magento: पासवर्ड रीसेट लिंक काम नहीं कर रहा है
- 4. एएसपी.नेट सदस्यता पासवर्ड रीसेट
- 5. Django पासवर्ड रीसेट। मेल
- 6. Django पासवर्ड रीसेट ईमेल विषय
- 7. आप एसए पासवर्ड कैसे रीसेट करते हैं?
- 8. mysql रूट पासवर्ड को रीसेट कैसे करें?
- 9. डेविस - पुनर्प्राप्त करने योग्य (पासवर्ड रीसेट)
- 10. एचटीएमएल बैक लिंक कैसे बनाएं?
- 11. node.js में पासवर्ड रीसेट टोकन जेनरेट करें
- 12. पासवर्ड रीसेट करने या पुराने पासवर्ड देने के सुरक्षित तरीके
- 13. एएसपी.नेट में पासवर्ड रिकवरी लिंक कैसे कार्यान्वित करें?
- 14. ज़ेंड फ्रेमवर्क में पासवर्ड रीसेट करने के लिए यादृच्छिक पासवर्ड या अस्थायी यूआरएल कैसे उत्पन्न करें?
- 15. यादृच्छिक पासवर्ड कैसे बनाएं? create_user समारोह
- 16. मैं हडसन में उपयोगकर्ता पासवर्ड कैसे रीसेट करूं?
- 17. मैं सदस्य सदस्यता उपयोगकर्ता को कैसे नियंत्रित करूं। रीसेट पासवर्ड()
- 18. एसएसआईएस पैकेज पासवर्ड को कैसे पुनर्प्राप्त या रीसेट करें?
- 19. हमें कुछ समय बाद खाता सक्रियण/पासवर्ड रीसेट लिंक क्यों समाप्त करना चाहिए?
- 20. एंड्रॉइड में लिंक बटन कैसे बनाएं
- 21. FUSE में प्रतीकात्मक लिंक कैसे बनाएं?
- 22. निर्देशिका के लिए एक लिंक कैसे बनाएं
- 23. एक लिंक बनाएं 100% चौड़ाई
- 24. WebMatrix.WebData.WebSecurity - मैं केवल UserRame को पासवर्ड रीसेट टोकन
- 25. पासवर्ड को रीसेट करने के लिए Django + फॉर्म
- 26. आईओएस: एक लिंक बटन बनाएं
- 27. Django टेम्पलेट्स: "बैक" लिंक बनाएं?
- 28. Symfony2: एक लॉगआउट लिंक बनाएं
- 29. Django: पासवर्ड रीसेट ईमेल विषय पंक्ति में 'example.com
- 30. django-पंजीकरण पासवर्ड रीसेट कस्टम टेम्पलेट रीसेट नहीं हो रहा है
अधिकांश क्रिप्टोग्राफिक पुस्तकालयों एक क्रिप्टोग्राफी द्वारा यादृच्छिक संख्या पैदा करने के लिए उपकरण है पाने के लिए। आपको हैश, एनकोड या एन्क्रिप्ट करने की आवश्यकता नहीं है। आपको केवल 'यादृच्छिक' वर्ग प्रदान करने से यादृच्छिक यादृच्छिक संख्या की आवश्यकता हो सकती है। – Servy