security फॉर्म-आधारित वेबसाइट प्रमाणीकरण के लिए निश्चित मार्गदर्शिका




http authentication (10)

मुझे नहीं पता कि जवाब के रूप में या टिप्पणी के रूप में इसका जवाब देना सबसे अच्छा था या नहीं। मैंने पहले विकल्प का चयन किया।

शिकार भाग IV के बारे में : पहले जवाब में भूल गए पासवर्ड कार्यक्षमता , मैं टाइम अटैक के बारे में एक बिंदु बनाउंगा ।

में याद रखें अपना पासवर्ड रूपों, एक हमलावर संभवतः ईमेल की एक पूरी सूची की जाँच करें और पता लगाने प्रणाली (नीचे दिए गए लिंक देखें) के लिए पंजीकृत हैं जो हो सकता है।

भूल गए पासवर्ड फॉर्म के बारे में, मैं जोड़ता हूं कि कुछ विलंब समारोह के साथ सफल और असुरक्षित प्रश्नों के बीच समान समय के लिए यह एक अच्छा विचार है।

https://crypto.stanford.edu/~dabo/papers/webtiming.pdf

वेबसाइटों के लिए फॉर्म-आधारित प्रमाणीकरण

हमारा मानना ​​है कि स्टैक ओवरफ़्लो केवल विशिष्ट तकनीकी प्रश्नों के लिए संसाधन नहीं होना चाहिए, बल्कि सामान्य समस्याओं पर भिन्नताओं को हल करने के तरीके पर सामान्य दिशानिर्देशों के लिए भी होना चाहिए। "वेबसाइटों के लिए फॉर्म आधारित प्रमाणीकरण" इस तरह के प्रयोग के लिए एक अच्छा विषय होना चाहिए।

इसमें विषयों को शामिल करना चाहिए जैसे कि:

  • लॉग इन कैसे करें
  • लॉग आउट कैसे करें
  • लॉग इन कैसे रहें
  • कुकीज़ प्रबंधित करना (अनुशंसित सेटिंग्स सहित)
  • एसएसएल / एचटीटीपीएस एन्क्रिप्शन
  • पासवर्ड कैसे स्टोर करें
  • गुप्त प्रश्नों का प्रयोग करना
  • भूल गए उपयोगकर्ता नाम / पासवर्ड कार्यक्षमता
  • क्रॉस-साइट अनुरोध nonces ( nonces को रोकने के लिए nonces का उपयोग
  • OpenID
  • "मुझे याद रखें" चेकबॉक्स
  • उपयोगकर्ता नाम और पासवर्ड का ब्राउज़र स्वत: पूर्णता
  • गुप्त यूआरएल (पचाने से सुरक्षित सार्वजनिक URL )
  • पासवर्ड की ताकत की जांच
  • ई-मेल सत्यापन
  • और फॉर्म आधारित प्रमाणीकरण के बारे में और भी बहुत कुछ ...

इसमें चीजों को शामिल नहीं करना चाहिए:

  • भूमिकाएं और प्राधिकरण
  • HTTP मूल प्रमाणीकरण

कृपया हमारी सहायता करें:

  1. उपtopics का सुझाव
  2. इस विषय के बारे में अच्छे लेख जमा करना
  3. आधिकारिक उत्तर संपादन


हैशिंग होने पर, तेजी से हैश एल्गोरिदम का उपयोग न करें जैसे कि एमडी 5 (कई हार्डवेयर कार्यान्वयन मौजूद हैं)। SHA-512 जैसे कुछ का उपयोग करें। पासवर्ड के लिए, धीमी हैश बेहतर हैं।

जितनी तेजी से आप हैंश बना सकते हैं, तेज़ किसी भी ब्रूट फोर्स चेकर काम कर सकते हैं। इसलिए धीमी हैश ब्रश फोर्सिंग धीमा कर देगा। एक धीमी हैश एल्गोरिदम लंबे पासवर्ड के लिए अव्यवहारिक मजबूर कर देगा (8 अंक +)


गहराई से रक्षा के आधार पर, मैं एक सुझाव जोड़ना चाहता हूं। नियमित उपयोगकर्ताओं के रूप में व्यवस्थापक के लिए आपको एक ही लेख और लेख प्रणाली की आवश्यकता नहीं है। आपके पास अनुरोधों के लिए पृथक कोड निष्पादित एक अलग यूआरएल पर एक अलग लॉगिन फॉर्म हो सकता है जो उच्च विशेषाधिकार प्रदान करेगा। यह विकल्प चुन सकता है जो नियमित उपयोगकर्ताओं के लिए कुल दर्द होगा। ऐसा एक है जिसका मैंने उपयोग किया है वास्तव में व्यवस्थापक पहुंच के लिए लॉगिन यूआरएल को स्कैम्बल करना है और व्यवस्थापक को नया यूआरएल ईमेल करना है। किसी भी ब्रूट फोर्स अटैक को तुरंत रोकता है क्योंकि आपका नया यूआरएल मनमाने ढंग से मुश्किल हो सकता है (बहुत लंबी यादृच्छिक स्ट्रिंग) लेकिन आपके व्यवस्थापक उपयोगकर्ता की असुविधा उनके ईमेल में एक लिंक का पालन कर रही है। हमलावर अब नहीं जानता कि यहां तक ​​कि पोस्ट करने के लिए कहां जाना है।


मैंने सोचा कि मैं इस समाधान को साझा करूंगा जो मुझे ठीक काम करने लगता है।

मैं इसे डमी फील्ड कहता हूं (हालांकि मैंने इसका आविष्कार नहीं किया है इसलिए मुझे श्रेय न दें)।

संक्षेप में: आपको बस <form>इसे अपने अंदर डालना होगा और सत्यापन के दौरान खाली होने की जांच करें:

<input type="text" name="email" style="display:none" />

चाल यह सोचने के लिए एक बॉट को मूर्ख बनाना है कि उसे आवश्यक फ़ील्ड में डेटा डालना है, इसलिए मैंने इनपुट "ईमेल" नाम दिया है। यदि आपके पास पहले से ही एक ईमेल नामक फ़ील्ड है जिसका आप उपयोग कर रहे हैं तो आपको "कंपनी", "फोन" या "ईमेलड्रेस" जैसी कुछ और डमी फ़ील्ड नामकरण करने का प्रयास करना चाहिए। बस कुछ ऐसा चुनें जिसे आप जानते हैं जिसकी आपको आवश्यकता नहीं है और कुछ ऐसा लगता है जो लोगों को आम तौर पर वेब फॉर्म में भरने के लिए तार्किक लगता है। अब inputसीएसएस या जावास्क्रिप्ट / jQuery का उपयोग करके फ़ील्ड को छुपाएं - जो भी आपको सबसे अच्छा लगा - बस इनपुट को सेट type करें hiddenया अन्यथा इसके लिए बॉट नहीं गिर जाएगा।

जब आप फॉर्म (या तो ग्राहक या सर्वर पक्ष) को सत्यापित कर रहे हैं तो जांचें कि क्या आपका डमी फ़ील्ड यह निर्धारित करने के लिए भरा गया है कि यह मानव या बॉट द्वारा भेजा गया था या नहीं।

उदाहरण:

मानव के मामले में: उपयोगकर्ता को डमी फ़ील्ड नहीं दिखाई देगा (मेरे मामले में "ईमेल" नाम दिया गया है) और इसे भरने का प्रयास नहीं करेगा। तो जब फॉर्म भेज दिया गया है तो डमी क्षेत्र का मूल्य अभी भी खाली होना चाहिए।

बॉट के मामले में: बॉट एक ऐसा क्षेत्र देखेगा जिसका प्रकार है textऔर एक नाम email(या जिसे आप इसे कहते हैं) और तर्कसंगत रूप से उचित डेटा के साथ भरने का प्रयास करेंगे। यह परवाह नहीं है कि आपने कुछ फैंसी सीएसएस के साथ इनपुट फॉर्म को स्टाइल किया है, वेब डेवलपर्स इसे हर समय करते हैं। डमी क्षेत्र में जो भी मूल्य है, हम तब तक परवाह नहीं करते जब तक कि यह 0वर्णों से बड़ा न हो ।

मैंने इस विधि का उपयोग अतिथि पुस्तिका पर CAPTCHAs संयोजन में किया था , और मैंने तब से एक स्पैम पोस्ट नहीं देखा है। मैंने पहले कैप्चा-केवल समाधान का उपयोग किया था, लेकिन आखिरकार इसके परिणामस्वरूप हर घंटे लगभग पांच स्पैम पोस्ट हुए। फॉर्म में डमी फ़ील्ड जोड़ना बंद हो गया है (कम से कम अब तक) सभी स्पैम दिखाई देने से।

मेरा मानना ​​है कि इसका उपयोग लॉगिन / प्रमाणीकरण फ़ॉर्म के साथ भी ठीक किया जा सकता है।

चेतावनी : बेशक यह विधि 100% मूर्ख प्रमाण नहीं है। इनपुट फ़ील्ड को उस पर display:noneलागू शैली के साथ अनदेखा करने के लिए बॉट प्रोग्राम किए जा सकते हैं। आपको उन लोगों के बारे में भी सोचना होगा जो ऑटो फॉर्मूलेशन के कुछ रूपों का उपयोग करते हैं (जैसे अधिकांश ब्राउज़रों ने अंतर्निहित किया है!) उनके लिए सभी फॉर्म फ़ील्ड्स को स्वतः भरने के लिए। वे बस एक डमी क्षेत्र भी ले सकते हैं।

आप डमी क्षेत्र को दिखाई देकर स्क्रीन की सीमाओं के बाहर छोड़कर इसे थोड़ा अलग कर सकते हैं, लेकिन यह पूरी तरह से आपके ऊपर है।

रचनात्मक बनो!


मुझे नहीं लगता कि उपरोक्त उत्तर "गलत" है लेकिन प्रमाणीकरण के बड़े क्षेत्र हैं जो स्पर्श नहीं किए जाते हैं (या बल्कि "कुकी सत्रों को कार्यान्वित करने के तरीके" पर जोर दिया जाता है, न कि "कौन से विकल्प उपलब्ध हैं और व्यापार क्या हैं नापसंद "।

मेरे सुझाए गए संपादन / उत्तर हैं

  • पासवर्ड जांच में खाता सेटअप में समस्या अधिक है।
  • पासवर्ड एन्क्रिप्शन के अधिक चालाक माध्यमों की तुलना में दो कारक स्वाधीनता का उपयोग अधिक सुरक्षित है
  • अपने स्वयं के लॉगिन फॉर्म या पासवर्ड के डाटाबेस स्टोरेज को लागू करने की कोशिश न करें, जब तक कि डेटा संग्रहित नहीं किया जाता है, खाता निर्माण और स्वयं उत्पन्न (यानी, वेब 2.0 शैली जैसे फेसबुक, Flickr इत्यादि) पर बेकार है ।

    1. डाइजेस्ट प्रमाणीकरण एक मानक आधारित दृष्टिकोण है जो सभी प्रमुख ब्राउज़रों और सर्वरों में समर्थित है, जो एक सुरक्षित चैनल पर भी पासवर्ड नहीं भेजेगा।

यह "सत्र" या कुकीज़ रखने की किसी भी आवश्यकता से बचाता है क्योंकि ब्राउज़र हर बार संचार को फिर से एन्क्रिप्ट करेगा। यह सबसे हल्का "हल्का" विकास दृष्टिकोण है।

हालांकि, मैं सार्वजनिक, कम मूल्य सेवाओं को छोड़कर, इसकी अनुशंसा नहीं करता हूं। यह उपरोक्त कुछ अन्य उत्तरों के साथ एक मुद्दा है - सर्वर-साइड ऑटोथेक्चर तंत्र को फिर से कार्यान्वित करने का प्रयास न करें - यह समस्या हल हो गई है और अधिकांश प्रमुख ब्राउज़रों द्वारा समर्थित है। कुकीज़ का प्रयोग न करें। अपने हाथ से लुढ़काए डेटाबेस में कुछ भी स्टोर न करें। अगर अनुरोध आलसी है, तो प्रति अनुरोध पूछें। बाकी सब कुछ कॉन्फ़िगरेशन और तृतीय-पक्ष विश्वसनीय सॉफ़्टवेयर द्वारा समर्थित होना चाहिए।

इसलिए ...

सबसे पहले, हम बाद में पासवर्ड की पुनः जांच के साथ एक खाते (पासवर्ड के साथ) की प्रारंभिक रचना को भ्रमित कर रहे हैं। अगर मैं फ़्लिकर हूं और पहली बार अपनी साइट बना रहा हूं, तो नए उपयोगकर्ता के पास शून्य मान (रिक्त वेब स्पेस) तक पहुंच है। मुझे सच में परवाह नहीं है कि खाता बनाने वाला व्यक्ति उनके नाम के बारे में झूठ बोल रहा है। मैं अस्पताल इंट्रानेट / एक्स्ट्रानेट का एक खाता बनाने हूं, तो मूल्य सभी मेडिकल रिकॉर्ड में निहित है, और इसलिए मैं करना खाता निर्माता की पहचान (*) के बारे में परवाह।

यह बहुत कठिन हिस्सा है। केवल सभ्य समाधान विश्वास का एक वेब है। उदाहरण के लिए, आप अस्पताल में डॉक्टर के रूप में शामिल हो जाते हैं। आप अपनी तस्वीर, अपना पासपोर्ट नंबर और सार्वजनिक कुंजी के साथ कहीं भी होस्ट किया गया एक वेब पेज बनाते हैं, और उन सभी को निजी कुंजी के साथ हैश करें। फिर आप अस्पताल जाते हैं और सिस्टम प्रशासक आपके पासपोर्ट को देखता है, देखता है कि फोटो आपके साथ मेल खाता है, और उसके बाद अस्पताल निजी कुंजी के साथ वेब पेज / फोटो हैश हैश करता है। अब से हम सुरक्षित रूप से कुंजी और टोकन का आदान-प्रदान कर सकते हैं। जैसा कोई भी अस्पताल पर भरोसा करता है (गुप्त सॉस बीटीडब्ल्यू है)। सिस्टम प्रशासक आपको RSA डोंगल या अन्य दो-कारक प्रमाणीकरण भी दे सकता है ।

लेकिन यह बहुत परेशानी है, और बहुत वेब 2.0 नहीं है। हालांकि, यह उन नए खातों को बनाने का एकमात्र सुरक्षित तरीका है जिनके पास मूल्यवान जानकारी तक पहुंच है जो स्वयं निर्मित नहीं है।

  1. केर्बेरोस और एसपीएनईजीओ - एक विश्वसनीय तृतीय पक्ष के साथ तंत्र पर एकल संकेत - मूल रूप से उपयोगकर्ता एक विश्वसनीय तृतीय पक्ष के खिलाफ सत्यापित करता है। (एनबी यह किसी भी तरह से भरोसा नहीं किया जाता है OAuth )

  2. SRP - एक विश्वसनीय तृतीय पक्ष के बिना चालाक पासवर्ड प्रमाणीकरण की तरह। लेकिन यहां हम "दो कारक प्रमाणीकरण का उपयोग करना सुरक्षित है, भले ही यह महंगा हो" के क्षेत्र में हो रहे हैं

  3. SSL क्लाइंट साइड - ग्राहकों को एक सार्वजनिक कुंजी प्रमाणपत्र (सभी प्रमुख ब्राउज़रों में समर्थन - लेकिन क्लाइंट मशीन सुरक्षा पर सवाल उठाता है) दें।

अंत में यह एक ट्रेडऑफ है - अधिक सुरक्षित दृष्टिकोण लागू करने की लागत बनाम सुरक्षा उल्लंघन की लागत क्या है। एक दिन, हम एक उचित PKI व्यापक रूप से स्वीकार्य देख सकते हैं और इसलिए कोई और अधिक लुढ़का प्रमाणीकरण फॉर्म और डेटाबेस नहीं। एक दिन...


सबसे पहले, एक मजबूत चेतावनी है कि यह जवाब इस सटीक प्रश्न के लिए सबसे अच्छा फिट नहीं है। यह निश्चित रूप से शीर्ष जवाब नहीं होना चाहिए!

मैं आगे BrowserID और भविष्य में प्रमाणीकरण के बेहतर दृष्टिकोण के लिए अपग्रेड पथ खोजने की भावना में मोज़िला के प्रस्तावित BrowserID (या शायद अधिक सटीक, सत्यापित ईमेल प्रोटोकॉल ) का उल्लेख BrowserID

मैं इसे इस तरह सारांशित करूंगा:

  1. मोज़िला एक गैर-लाभकारी values जो इस समस्या के अच्छे समाधान खोजने के साथ अच्छी तरह से संरेखित है।
  2. आज वास्तविकता यह है कि अधिकांश वेबसाइट फॉर्म-आधारित प्रमाणीकरण का उपयोग करती हैं
  3. फॉर्म-आधारित प्रमाणीकरण में बड़ी कमी है, जो phishing जोखिम बढ़ा है। उपयोगकर्ताओं को उनके उपयोगकर्ता एजेंट (ब्राउज़र) द्वारा नियंत्रित क्षेत्र की बजाय दूरस्थ इकाई द्वारा नियंत्रित क्षेत्र में संवेदनशील जानकारी दर्ज करने के लिए कहा जाता है।
  4. चूंकि ब्राउज़र पूरी तरह से भरोसेमंद हैं (उपयोगकर्ता एजेंट का पूरा विचार उपयोगकर्ता की तरफ से कार्य करना है), वे इस स्थिति में सुधार करने में मदद कर सकते हैं।
  5. प्राथमिक बल यहां प्रगति कर रहा है तैनाती डेडलॉक है । समाधानों को उन चरणों में विघटित किया जाना चाहिए जो अपने आप पर कुछ वृद्धिशील लाभ प्रदान करते हैं।
  6. इंटरनेट इंफ्रास्ट्रक्चर में बनाई गई पहचान को व्यक्त करने के लिए सबसे सरल विकेन्द्रीकृत विधि डोमेन नाम है।
  7. पहचान व्यक्त करने के दूसरे स्तर के रूप में, प्रत्येक डोमेन अपने स्वयं के खातों का सेट प्रबंधित करता है।
  8. फॉर्म "खाता @ डोमेन" संक्षेप में है और प्रोटोकॉल और यूआरआई योजनाओं की एक विस्तृत श्रृंखला द्वारा समर्थित है। इस तरह के एक पहचानकर्ता, ज़ाहिर है, सबसे सार्वभौमिक रूप से एक ईमेल पते के रूप में मान्यता प्राप्त है।
  9. ईमेल प्रदाता पहले से ही डी-फैक्टो प्राथमिक पहचान प्रदाता हैं। वर्तमान पासवर्ड रीसेट प्रवाह आमतौर पर आपको खाते का नियंत्रण लेने देता है यदि आप साबित कर सकते हैं कि आप उस खाते के संबंधित ईमेल पते को नियंत्रित करते हैं।
  10. डोमेन बी पर साबित करने की प्रक्रिया को सुव्यवस्थित करने के लिए, सत्यापित डोमेन प्रोटोकॉल को सार्वजनिक कुंजी क्रिप्टोग्राफ़ी के आधार पर एक सुरक्षित विधि प्रदान करने का प्रस्ताव दिया गया था, जिसमें आपके पास डोमेन ए पर खाता है।
  11. उन ब्राउज़रों के लिए जो सत्यापित ईमेल प्रोटोकॉल (वर्तमान में उनमें से सभी) का समर्थन नहीं करते हैं, मोज़िला एक शिम प्रदान करता है जो क्लाइंट-साइड जावास्क्रिप्ट कोड में प्रोटोकॉल लागू करता है।
  12. ईमेल सेवाओं के लिए जो सत्यापित ईमेल प्रोटोकॉल का समर्थन नहीं करते हैं, प्रोटोकॉल तीसरे पक्ष को विश्वसनीय मध्यस्थ के रूप में कार्य करने की अनुमति देता है, यह कहते हुए कि उन्होंने किसी उपयोगकर्ता के खाते का स्वामित्व सत्यापित कर लिया है। ऐसी तीसरी पार्टियों की बड़ी संख्या में वांछनीय नहीं है; यह क्षमता केवल अपग्रेड पथ की अनुमति देने के लिए है, और यह बहुत पसंद है कि ईमेल सेवाएं इन दावों को स्वयं प्रदान करती हैं।
  13. मोज़िला ऐसी भरोसेमंद तीसरी पार्टी के रूप में कार्य करने के लिए अपनी सेवा प्रदान करता है। सत्यापित प्रदाता प्रोटोकॉल को लागू करने वाले सेवा प्रदाता (यानी, पार्टियों पर निर्भर) मोज़िला के दावों पर भरोसा करना चुन सकते हैं या नहीं। मोज़िला की सेवा एक पुष्टिकरण लिंक के साथ एक ईमेल भेजने के पारंपरिक माध्यमों का उपयोग करके उपयोगकर्ताओं के खाते के स्वामित्व की पुष्टि करती है।
  14. सेवा प्रदाता, निश्चित रूप से, इस प्रोटोकॉल को प्रमाणीकरण की किसी भी अन्य विधि (एस) के अलावा एक विकल्प के रूप में पेश कर सकते हैं, जो वे पेश करना चाहते हैं।
  15. यहां एक बड़ा यूजर इंटरफेस लाभ मांगा जा रहा है वह "पहचान चयनकर्ता" है। जब कोई उपयोगकर्ता किसी साइट पर जाता है और प्रमाणीकरण करने का विकल्प चुनता है, तो उनका ब्राउज़र उन्हें ईमेल पते ("व्यक्तिगत", "काम", "राजनीतिक सक्रियता" इत्यादि) का चयन करता है, वे साइट पर स्वयं को पहचानने के लिए उपयोग कर सकते हैं।
  16. इस प्रयास के हिस्से के रूप में एक और बड़ा यूजर इंटरफेस लाभ मांगा जा रहा है , ब्राउज़र को उपयोगकर्ता के सत्र के बारे में अधिक जानने में मदद कर रहा है - जो वर्तमान में मुख्य रूप से साइन इन हैं - इसलिए यह ब्राउज़र क्रोम में प्रदर्शित हो सकता है।
  17. इस प्रणाली की वितरित प्रकृति की वजह से, यह फेसबुक, ट्विटर, Google इत्यादि जैसी प्रमुख साइटों पर लॉक-इन से बचाता है। किसी भी व्यक्ति का अपना डोमेन हो सकता है और इसलिए अपने स्वयं के पहचान प्रदाता के रूप में कार्य कर सकता है।

यह सख्ती से "वेबसाइटों के लिए फॉर्म-आधारित प्रमाणीकरण" नहीं है। लेकिन यह फ़ॉर्म-आधारित प्रमाणीकरण के वर्तमान मानदंड से कुछ और सुरक्षित करने के लिए संक्रमण का प्रयास है: ब्राउज़र-समर्थित प्रमाणीकरण।


परिभाषित लेख

प्रमाण पत्र भेजना

SSL का उपयोग करके प्रमाण पत्र 100% सुरक्षित रूप से भेजने का एकमात्र व्यावहारिक तरीका है। हैश करने के लिए जावास्क्रिप्ट का उपयोग पासवर्ड सुरक्षित नहीं है। क्लाइंट-साइड पासवर्ड हैशिंग के लिए सामान्य नुकसान:

  • यदि क्लाइंट और सर्वर के बीच कनेक्शन अनएन्क्रिप्टेड है, तो आप जो कुछ भी करते हैं वह मैन-इन-द-बीच हमलों के लिए कमजोर है । एक हमलावर हैशिंग को तोड़ने या अपने सर्वर पर सभी क्रेडेंशियल भेजने के लिए आने वाली जावास्क्रिप्ट को प्रतिस्थापित कर सकता है, वे ग्राहक प्रतिक्रियाओं को सुन सकते हैं और उपयोगकर्ताओं को पूरी तरह से प्रतिरूपण कर सकते हैं आदि। विश्वसनीय प्रमाणपत्र प्राधिकरणों के साथ एसएसएल को एमआईटीएम हमलों को रोकने के लिए डिज़ाइन किया गया है।
  • यदि आप सर्वर पर अतिरिक्त, अनावश्यक काम नहीं करते हैं तो सर्वर द्वारा प्राप्त किया गया हैश पासवर्ड कम सुरक्षित है।

एसआरपी नामक एक और सुरक्षित विधि है, लेकिन यह पेटेंट है (हालांकि इसे स्वतंत्र रूप से लाइसेंस प्राप्त है ) और कुछ अच्छे कार्यान्वयन उपलब्ध हैं।

पासवर्ड संग्रहित करना

डेटाबेस में सादे टेक्स्ट के रूप में कभी भी पासवर्ड स्टोर न करें। भले ही आपको अपनी साइट की सुरक्षा की परवाह न हो। मान लें कि आपके कुछ उपयोगकर्ता अपने ऑनलाइन बैंक खाते का पासवर्ड पुनः उपयोग करेंगे। तो, हैश पासवर्ड को स्टोर करें, और मूल को फेंक दें। और सुनिश्चित करें कि पासवर्ड एक्सेस लॉग या एप्लिकेशन लॉग में दिखाई नहीं देता है। ओडब्ल्यूएएसपी नए अनुप्रयोगों के लिए आपकी पहली पसंद के रूप में Argon2 के उपयोग की सिफारिश करता है । यदि यह उपलब्ध नहीं है, तो इसके बजाय पीबीकेडीएफ 2 या स्क्रिप का उपयोग किया जाना चाहिए। और अंत में यदि उपरोक्त में से कोई भी उपलब्ध नहीं है, तो bcrypt का उपयोग करें।

खुद के द्वारा हेश भी असुरक्षित हैं। उदाहरण के लिए, समान पासवर्ड का मतलब समान हैश है - यह हैश लुकअप टेबल को एक साथ कई पासवर्ड क्रैक करने का एक प्रभावी तरीका बनाता है। इसके बजाय, नमकीन हैश स्टोर करें। एक नमक हैशिंग से पहले पासवर्ड में जोड़ा गया एक स्ट्रिंग है - प्रति उपयोगकर्ता एक अलग (यादृच्छिक) नमक का उपयोग करें। नमक एक सार्वजनिक मूल्य है, इसलिए आप उन्हें डेटाबेस में हैश के साथ स्टोर कर सकते हैं। इस पर और अधिक के लिए here देखें।

इसका मतलब यह है कि आप उपयोगकर्ता को उनके भूल गए पासवर्ड नहीं भेज सकते हैं (क्योंकि आपके पास केवल हैश है)। उपयोगकर्ता के पासवर्ड को रीसेट न करें जब तक कि आपने उपयोगकर्ता को प्रमाणीकृत नहीं किया है (उपयोगकर्ताओं को यह साबित करना होगा कि वे संग्रहीत (और मान्य) ईमेल पते पर भेजे गए ईमेल पढ़ सकते हैं।)

सुरक्षा प्रश्न

सुरक्षा प्रश्न असुरक्षित हैं - उनका उपयोग करने से बचें। क्यूं कर? कोई भी सुरक्षा प्रश्न करता है, एक पासवर्ड बेहतर करता है। भाग III पढ़ें : @ जेन्स रोलैंड में गुप्त प्रश्नों का उपयोग इस विकी में यहां जवाब दें

सत्र कुकीज़

उपयोगकर्ता लॉग इन करने के बाद, सर्वर उपयोगकर्ता को सत्र कुकी भेजता है। सर्वर कुकी से उपयोगकर्ता नाम या आईडी पुनर्प्राप्त कर सकता है, लेकिन कोई भी ऐसी कुकी उत्पन्न नहीं कर सकता है (TODO व्याख्या तंत्र)।

कुकीज को अपहृत किया जा सकता है : वे केवल ग्राहक की मशीन और अन्य संचार के रूप में सुरक्षित हैं। उन्हें डिस्क से पढ़ा जा सकता है, नेटवर्क ट्रैफिक में स्नीफ किया जा सकता है, एक क्रॉस-साइट स्क्रिप्टिंग हमले से उठाया जाता है, जो एक जहरीले DNS से ​​फिसल जाता है ताकि क्लाइंट गलत कुकीज़ पर अपनी कुकीज़ भेज सके। लगातार कुकीज़ न भेजें। कुकीज़ क्लाइंट सत्र के अंत में समाप्त होनी चाहिए (ब्राउज़र बंद करें या अपना डोमेन छोड़ दें)।

यदि आप अपने उपयोगकर्ताओं को ऑटोलॉगिन करना चाहते हैं, तो आप एक सतत कुकी सेट कर सकते हैं, लेकिन यह पूर्ण-सत्र कुकी से अलग होना चाहिए। आप एक अतिरिक्त ध्वज सेट कर सकते हैं जिसे उपयोगकर्ता ने स्वतः लॉग इन किया है, और संवेदनशील संचालन के लिए वास्तविक रूप से लॉगिन करने की आवश्यकता है। यह शॉपिंग साइटों के साथ लोकप्रिय है जो आपको एक निर्बाध, व्यक्तिगत खरीदारी अनुभव प्रदान करना चाहते हैं लेकिन फिर भी आपके वित्तीय विवरणों की रक्षा करते हैं। उदाहरण के लिए, जब आप अमेज़ॅन जाने के लिए वापस आते हैं, तो वे आपको एक ऐसा पृष्ठ दिखाते हैं जो आपको लगता है कि आप लॉग इन हैं, लेकिन जब आप ऑर्डर करने के लिए जाते हैं (या अपना शिपिंग पता, क्रेडिट कार्ड इत्यादि बदलते हैं), तो वे आपको पुष्टि करने के लिए कहते हैं आपका पासवर्ड।

दूसरी ओर बैंक और क्रेडिट कार्ड जैसे वित्तीय वेब साइटों में केवल संवेदनशील डेटा होता है और ऑटो-लॉगिन या कम-सुरक्षा मोड की अनुमति नहीं देनी चाहिए।

बाहरी संसाधनों की सूची



मैं एक बहुत ही महत्वपूर्ण टिप्पणी जोड़ना चाहता हूं:

  • "एक कॉर्पोरेट, इंट्रा नेट सेटिंग में," अगर अधिकांश पूर्वगामी लागू नहीं हो सकता है!

कई निगम "केवल आंतरिक उपयोग" वेबसाइटों को तैनात करते हैं जो प्रभावी रूप से "कॉर्पोरेट अनुप्रयोग" होते हैं जो यूआरएल के माध्यम से लागू किए जाते हैं। ये यूआरएल (माना जाता है ...) केवल "कंपनी के आंतरिक नेटवर्क" के भीतर हल हो सकते हैं। (कौन सा नेटवर्क जादुई रूप से सभी वीपीएन-जुड़े 'सड़क योद्धाओं' शामिल है।)

जब कोई उपयोगकर्ता उपरोक्त नेटवर्क से कर्तव्य से जुड़ा होता है, तो उनकी पहचान ("प्रमाणीकरण") [पहले से ही ...] "निश्चित रूप से ज्ञात है," जैसी कुछ चीजें करने के लिए उनकी अनुमति ("प्राधिकरण") है ... जैसे कि। .. "इस वेबसाइट तक पहुंचने के लिए।"

यह "प्रमाणीकरण + प्रमाणीकरण" सेवा कई अलग-अलग तकनीकों, जैसे कि एलडीएपी (माइक्रोसॉफ्ट ओपन डायरेक्टरी) , या केर्बेरोस द्वारा प्रदान की जा सकती है ।

आपके दृष्टिकोण से, आप बस यह जानते हैं: जो भी आपकी वेबसाइट पर वैध रूप से हवाओं से घूमता है, उसके साथ [पर्यावरण-परिवर्तनीय जादुई रूप से युक्त ...] एक "टोकन" होना चाहिए। ( यानी इस तरह के टोकन की अनुपस्थिति तत्काल आधार होनी चाहिए 404 Not Found।)

टोकन का मूल्य आपको कोई समझ नहीं आता है, लेकिन, आवश्यकता उत्पन्न होनी चाहिए, "उपयुक्त साधन मौजूद हैं" जिसके द्वारा आपकी वेब साइट "[अधिकृत रूप से] किसी ऐसे व्यक्ति से पूछ सकती है जो (एलडीएपी ... आदि)" किसी और के बारे में जानता है ( !) सवाल है कि आपके पास हो सकता है। दूसरे शब्दों में, आप किसी भी "घर से उभरने वाले तर्क" का लाभ नहीं उठाते हैं । इसके बजाए, आप प्राधिकरण से पूछताछ करते हैं और पूरी तरह से अपने फैसले पर भरोसा करते हैं।

उह हुह ... यह "जंगली और ऊनी इंटरनेट" से काफी मानसिक-स्विच है।





article