2009-07-13 20 views
6

मैं अपनी साइट के लिए एक सुरक्षित लॉगिन करने की कोशिश कर रहा हूं जिसे मैं विकसित कर रहा हूं।एक सुरक्षित लॉगिन बनाना

मैं इसे काम करने के लिए नहीं मिल सकता, मैं PHP के साथ MySQL डेटाबेस का उपयोग करता हूं।

मैं उपयोगकर्ता को और उनकी जानकारी डेटाबेस में जोड़ने के लिए फॉर्म बना सकता हूं लेकिन मुझे यह लॉगिन के साथ काम नहीं कर रहा है।

HTML <input type="password"> के साथ किस प्रकार का एन्क्रिप्शन उपयोग किया जाता है?

मैं उपयोगकर्ता को अपनी साइट पर अपनी यात्रा के दौरान लॉग इन कैसे रखूं?

मैं सुरक्षित रूप से यह कैसे जांचूं कि यह सही पासवर्ड है जो उपयोगकर्ता नाम से मेल खाता है?

मैं शायद एक साल के लिए PHP कर रहा हूं, मैंने अभी तक यह हिस्सा नहीं सीखा है, इसलिए यह जानना अच्छा लगेगा।

+1

सुनिश्चित नहीं है कि आपको डाउनवोट क्यों मिला। +1 –

उत्तर

11

एचटीएमएल < इनपुट प्रकार = पासवर्ड> के साथ किस तरह का एन्क्रिप्शन उपयोग किया जाता है ??

कोई नहीं। इनपुट सिर्फ "मॉनीटर को देखकर" हमलों से बचाने के लिए मास्क किया गया है।

यदि आप सुरक्षा चाहते हैं, तो अपने डेटा को HTTPS (SSL के साथ HTTP) पर प्रेषित करें।

मैं उपयोगकर्ता को अपनी साइट पर अपनी यात्रा के दौरान लॉग इन कैसे रखूं?

अधिकांश लोग कुकीज़ का उपयोग करते हैं।

मैं सुरक्षित रूप से यह कैसे जांचूं कि यह सही पासवर्ड है जो उपयोगकर्ता नाम से मेल खाता है ??

सुरक्षित रूप से?

साझा सर्वर का उपयोग न करें। उस सर्वर पर डेटा को सुरक्षित रखने के लिए सामान्य चरणों का पालन करें। पासवर्ड को हैंश के रूप में स्टोर करें, सादा पाठ के रूप में नहीं।

चेक?

सबमिट किए गए पासवर्ड को मिलान हैश पर कनवर्ट करें, फिर सामान्य के रूप में तुलना करें। मान लें कि आप डेटा को डेटाबेस में संग्रहीत करते हैं, बस उपयोगकर्ता से चुनें जहां उपयोगकर्ता =? और पासवर्ड =? और उन पंक्तियों की संख्या की गणना करें जिन्हें आप वापस प्राप्त करते हैं।

+6

+1 "मॉनिटर को देखकर" हमलों –

+0

के लिए +1, तो क्या एक साझा सर्वर में mysql डेटाबेस शामिल होंगे जो Godaddy प्रदान करता है ?? मैं http की बजाय अपनी वेबसाइट https कैसे बना सकता हूं, क्या इसमें एसएसएल शामिल है? – techy

+0

मैं गोडाडी सिस्टम के सेटअप पर टिप्पणी नहीं कर सकता। मैंने उस कंपनी के बारे में पर्याप्त डरावनी कहानियां सुनाई हैं जो कभी उनके पास नहीं जातीं। HTTPS का उपयोग करने के लिए आप एक SSL प्रमाणपत्र खरीदते हैं और फिर इसे इंस्टॉल करते हैं ... और आप यह कैसे करते हैं जो आपके सर्वर पर निर्भर करता है। – Quentin

2

मैं आपके प्रश्न के पासवर्ड सुरक्षा भाग को संबोधित करूंगा।

पासवर्ड इनपुट प्रकार के साथ एन्क्रिप्शन में कोई निर्मित नहीं है। ब्राउज़र इसे सबकुछ की तरह सादे पाठ के रूप में सबमिट करेगा। पासवर्ड की सुरक्षा के दो तरीके हैं।

पहला challenge/response system स्थापित करना है, लेकिन इसके लिए जावास्क्रिप्ट को काम करने की आवश्यकता होगी। असल में आप उपयोगकर्ता का पासवर्ड लेते हैं, एक हैशिंग फ़ंक्शन को लागू करते हैं, यदि सर्वर पर संग्रहीत किया जाता है, तो आप एक सर्वर चुनौती टोकन लेते हैं और एक नए हैश के लिए पासवर्ड मान को नमक लेते हैं। सर्वर इसे पासवर्ड का मूल्य लेगा और चुनौती भी लागू करेगा। यदि वे पासवर्ड से मेल खाते हैं तो सही है और किसी के लिए यह जानने का कोई तरीका नहीं है कि वास्तविक पासवर्ड क्या था।इसके लिए जावास्क्रिप्ट की आवश्यकता है क्योंकि यदि यह दृष्टिकोण प्रभावी होना है तो हैश को ग्राहक पक्ष पर उत्पादित किया जाना चाहिए।

साइट के लॉग इन हिस्से के लिए HTTP की आवश्यकता एक और अधिक सरल विकल्प है।

+0

+1 एकत्र करता है। – Residuum

1

जैसा कि डेविड ने कहा कि डिफ़ॉल्ट रूप से पासवर्ड का कोई एन्क्रिप्शन नहीं है, एन्क्रिप्ट रखने के लिए https का उपयोग करें।

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

उपयोगकर्ता रखने के लिए, में लॉग इन करने के बाद आप पासवर्ड जाँच कर ली है, सत्र में एक चर सेट, यानी

$_SESSION[loggedin] = true. 

हर अनुरोध पर, इस सत्र चर की जाँच, और अगर यह सच है, उपयोग की अनुमति पृष्ठ पर है, अगर यह गलत है, के साथ एक

header("Location: /login.php"); 
0

पासवर्ड आदानों एन्क्रिप्टेड नहीं होते प्रवेश पृष्ठ पर उपयोगकर्ता अनुप्रेषित। यदि आप सादे टेक्स्ट पासवर्ड को स्टोर नहीं करना चाहते हैं (जैसा कि फ़ॉर्म द्वारा लौटाया गया है) तो आपको php और mysql दोनों द्वारा प्रदान किए गए कई कार्यों में से एक को चलाना चाहिए। पासवर्ड संग्रहित करने के लिए PHP के md5, sha1, या mysql के encrypt देखें।

फिर, यह जांचने के लिए कि क्या उन्होंने लॉग इन करने के लिए सही पासवर्ड दर्ज किया है, आप उनके प्रविष्टि पर जो भी एन्क्रिप्शन विधि का उपयोग कर सकते हैं, डेटाबेस से हैश किए गए पासवर्ड को पुनः प्राप्त कर सकते हैं और उनकी तुलना कर सकते हैं। (इसके अलावा, salting passwords देखें)

एक सतत लॉगिन सत्र रखने के लिए, आप php के $_SESSION चर का उपयोग कर सकते हैं। या setcookie()

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