सबसे पहले, यह आपके आवेदन की सुरक्षा में सुधार नहीं करता है (यह मानते हुए कि यह एक वेबप है)।
एसएसएल का उपयोग करें (या वास्तव में टीएलएस, जिसे आमतौर पर एसएसएल कहा जाता है), इसका वास्तव में महंगा नहीं है (जिस समय का उपयोग आप इसके चारों ओर तरीके खोजने के लिए कर रहे हैं और इसे न्यूनतम मजदूरी के साथ गुणा करें, प्रमाण पत्र जीतकर लगभग हमेशा जीतता है)।
क्यों यह सरल है। टीएलएस एक समस्या को हल करता है (जब खरीदे गए प्रमाणपत्रों के साथ प्रयोग किया जाता है, स्व हस्ताक्षरित नहीं) जो क्रिप्टोग्राफी में काफी बड़ा है: मुझे कैसे पता चलेगा कि मैं जिस सर्वर से बात कर रहा हूं क्या वह सर्वर है जो मुझे लगता है कि मैं बात कर रहा हूं? टीएलएस सर्टिफिकेट यह कहने का एक तरीका है: "मुझे, सर्टिफिकेट अथॉरिटी, जो आपके ब्राउज़र द्वारा विश्वसनीय है, यह प्रमाणित करता है कि वेबसाइट [url] में यह सार्वजनिक कुंजी है, जिसके पास एक निजी कुंजी है, जिसे (निजी कुंजी) केवल सर्वर जानता है, देखो मैंने दस्तावेज़ पर अपने हस्ताक्षर किए हैं, अगर कोई भी इसे बदल सकता है तो आप देख सकते हैं "।
टीएलएस के बिना, कोई भी एन्क्रिप्शन व्यर्थ हो जाता है, क्योंकि अगर मैं एक कॉफ़ेहॉप में आपके बगल में बैठता हूं, तो मैं आपका लैपटॉप / स्मार्टफोन सोच सकता हूं कि मैं सर्वर और एमआईटीएम (मैन इन द मिडल) हूं। टीएलएस के साथ, आपका लैपटॉप / स्मार्टफोन "UNTRUSTED CONNECTION" चिल्लाएगा, क्योंकि मेरे पास प्रमाणपत्र प्राधिकृत हस्ताक्षरित प्रमाणपत्र नहीं है जो आपकी साइट से मेल खाता हो। (एन्क्रिप्शन बनाम प्रमाणीकरण)।
अस्वीकरण: उपयोगकर्ता इन चेतावनियों के माध्यम से दाईं ओर क्लिक करते हैं: "अविश्वासित कनेक्शन? क्या? मुझे बस बिल्ली के बच्चे की तस्वीरें चाहिए! अपवाद जोड़ें क्लिक करें पुष्टि करें क्लिक करें ! बिल्ली के बच्चे!"
हालाँकि, यदि आप वास्तव में एक प्रमाण पत्र नहीं खरीदना चाहते हैं, तब भी क्लाइंट साइड जावास्क्रिप्ट हैशिंग को लागू करें (और उसके लिए स्टैंडफ़ोर्ड लाइब्रेरी (एसजेसीएल) का उपयोग करें, कभी भी अपने आप को सुरक्षित रखें )।
क्यों? पासवर्ड का पुन: उपयोग! मैं आसानी से HTTPS के बिना आसानी से आपके सत्र कुकी (जो मुझे आपके सर्वर को दिखावा करने की अनुमति देता है कि मैं आप हूं) चोरी कर सकता हूं (देखें फायरशीप)। हालाँकि, यदि आप अपने लॉगिन पृष्ठ पर एक जावास्क्रिप्ट जोड़ते हैं, जो भेजने से पहले, अपना पासवर्ड हैश (SHA256 का उपयोग करें, या इससे भी बेहतर, SHA256 का उपयोग करें, उन्हें आपके द्वारा बनाई गई एक सार्वजनिक कुंजी भेजें और उसके साथ पासवर्ड को एन्क्रिप्ट करने के बाद, आप एक नमक का उपयोग नहीं कर सकते हैं) इसके साथ), और फिर सर्वर पर हैशेड / एन्क्रिप्टेड पासवर्ड भेजता है। अपने सर्वर पर एक नमक के साथ हैश की समीक्षा करें और तुलना करें कि आपके डेटाबेस में क्या संग्रहीत है (पासवर्ड को इस तरह स्टोर करें:
(SHA256(SHA256(password)+salt))
(नमक को प्लेनटेक्स्ट के रूप में डेटाबेस में भी सेव करें))। और अपना पासवर्ड इस तरह भेजें:
RSA_With_Public_Key(SHA256(password))
और अपना पासवर्ड इस तरह जांचें:
if SHA256(RSA_With_Private_Key(SHA256(sent_password))+salt_for_username) == stored_pass: login = ok
क्योंकि, यदि कोई आपके ग्राहक को सूँघ रहा है, तो वे आपके ग्राहक (सत्र अपहरण) के रूप में लॉग इन करने में सक्षम होंगे, लेकिन वे सादे पासवर्ड को नहीं देख पाएंगे (जब तक कि वे आपके जावास्क्रिप्ट को नहीं बदलते हैं, हालांकि, एक स्टारबक्स हैकर को शायद पता नहीं होगा कि कैसे / रुचि हो इस में।) तो वे आपके वेब पर पहुँच प्राप्त करेंगे, लेकिन उनके ईमेल / फेसबुक / आदि पर नहीं। (जिसके लिए आपके उपयोगकर्ता संभवतः उसी पासवर्ड का उपयोग करेंगे)। (ईमेल पता या तो उनका लॉगिननाम होगा या आपके वेबएप पर उनकी प्रोफाइल / सेटिंग्स में मिलेगा)।