2014-05-12 4 views
9

मैं देख रहा हूं कि अजाक्स के माध्यम से PHP पर सुरक्षित रूप से उपयोगकर्ता नाम और पासवर्ड कैसे भेजना है और MySQL डेटाबेस में मूल्यों को भी ठीक से कैसे संग्रहीत करना है।PHP के लिए अजाक्स लॉगिन स्क्रिप्ट सुरक्षित

अतीत में मैं उदाहरण निम्न प्रकार का इस्तेमाल किया है:

var formData = {username:$('#username').val(), password:$('#password').val()}; 
//SEND 
$.ajax({ 
    type: "POST", 
    url: "/signin.php", 
    data: formData, 
    success: function(data) { 
     //success 
    } 
}); 

यह जावा स्क्रिप्ट के माध्यम से मान भेजने का तो एक वापसी OK या FAIL PHP से प्राप्त करने के लिए है। लेकिन क्या यह पर्याप्त सुरक्षित है? मैं उम्मीद कर रहा था कि कोई मुझे जावास्क्रिप्ट से PHP तक संवेदनशील डेटा भेजने की सही और सुरक्षित दिशा में इंगित करने के लिए बहुत दयालु होगा।

SQLfiddle

+0

मैं यह भी –

+6

के बारे में जानना चाहता हूं, यह सही और मानक तरीका है, यदि आप सर्वर पर भेजते समय उपयोगकर्ता नाम और पासवर्ड सुरक्षित करना चाहते हैं तो इसका मतलब है कि आप नेटवर्क स्तर की सुरक्षा चाहते हैं, इस उपयोग के लिए HTTPS, यह सुनिश्चित करें कि आपका डेटा होगा एन्क्रिप्टेड –

+1

यदि आपके पास SSL नहीं है, तो आप उपयोगकर्ता नाम और पासवर्ड पर जावास्क्रिप्ट सार्वजनिक कुंजी एन्क्रिप्शन का उपयोग कर सकते हैं और केवल सर्वर पर निजी कुंजी और PHP के साथ डिक्रिप्ट कर सकते हैं। – DanFromGermany

उत्तर

6

सुरक्षित आप कम से कम तीन चीजों को सुनिश्चित करने की आवश्यकता होने के लिए:

  1. इनपुट बॉक्स, type = पासवर्ड उपयोगकर्ता नियंत्रण जिसमें उपयोगकर्ता पासवर्ड में प्रवेश करती है एक पासवर्ड इनपुट प्रकार है , या इस उद्देश्य के लिए डिज़ाइन किया गया कस्टम नियंत्रण जिसे कैशिंग, आदि के लिए पर्याप्त रूप से मान्य किया गया है।
  2. कनेक्शन, https वर्तमान स्थिति में, आपका प्रश्न यह नहीं बताता कि कनेक्शन https से अधिक है या नहीं। यह सुरक्षित है यदि लॉगिन बॉक्स स्वयं सुरक्षित कनेक्शन के माध्यम से प्रदर्शित होता है। इसके अलावा AJAX को सुरक्षित कनेक्शन में पोस्ट करने की आवश्यकता है।
  3. हैश पासवर्ड ठीक से मूल PHP पासवर्ड हैशिंग API और हैश पासवर्ड का उपयोग करें और अपने डेटाबेस में हैश स्टोर करें। Password_verify फ़ंक्शन का उपयोग कर इनपुट पासवर्ड सत्यापित करें। दर और विफल लॉगिन अनुरोधों की संख्या

    1. नियंत्रण: password_hash() password_verify()

    यह "सही" आप भी विचार करना चाहिए ऐसा करने के लिए।

  4. रिकॉर्ड लॉगिन आंकड़े ताकि आप अजीब व्यवहार की पहचान कर सकें और इसकी जांच कर सकें
  5. उपयोगकर्ताओं के नए पासवर्ड को पर्याप्त मजबूत होने के लिए ब्राउज़र पक्ष और सर्वर साइड पासवर्ड ताकत परीक्षण का उपयोग करें।
  6. पैदल यात्री स्वचालन को रोकने के लिए कैप्चा का उपयोग करें
  7. विशेष रूप से प्रमाणीकरण के लिए डेटाबेस उपयोगकर्ता बनाएं। तदनुसार सीमा/स्कीमा पहुंच सीमा। प्रमाणीकरण के लिए एक अलग सबडोमेन का प्रयोग करें। उपयोगकर्ता को डेटाबेस तक पहुंच के लिए सेट करने के लिए fastcgi-php या suphp का उपयोग करें। सामान्य PHP डेटाबेस उपयोगकर्ता को केवल "सैंडबॉक्स" से सेमफोर या अन्य लॉगिन स्थिति प्रमाण पत्र पढ़ने की अनुमति दें।

  8. जब उपयोगकर्ता अपने पासवर्ड दर्ज कर रहे हैं, साइट सत्यापन, एसएसएल, और उनके द्वारा बनाए गए सत्यापन "वाक्यांश" या चित्र का उपयोग करते हैं, तो वे सुनिश्चित कर सकते हैं कि वे आपके सर्वर पर इनपुट कर रहे हैं।

इसके अतिरिक्त, लॉगिन के बाद आप जो भी करते हैं, उसमें अधिकांश सुरक्षा चिंताओं को शामिल किया जा रहा है। आप उपयोगकर्ता के सत्र को बनाए रखने की योजना कैसे बनाते हैं? ग्रेटर सुरक्षा के लिए आमतौर पर उपयोगकर्ता को समझौता सुविधा की आवश्यकता होती है। आपको सावधानीपूर्वक विचार करने की आवश्यकता है कि किस प्रकार की क्षमताओं और जानकारी उपयोगकर्ता को प्रमाणीकृत करने के लिए उपयोग की जाएगी। आपकी सुरक्षा योजना को ध्यान में रखना चाहिए।

एक विकल्प जिसे आप विचार कर सकते हैं वह OAuth2 प्रदाताओं जैसे Google और Facebook का उपयोग कर रहा है।

+0

यह ध्यान देने योग्य है कि यह पर्याप्त नहीं है कि केवल लॉगिन पृष्ठ https हो, * पूरी साइट * केवल 'https' होना चाहिए। –

+0

और: ** इसके लिए बनाई गई स्क्रिप्ट का उपयोग करें! ** कई बेहतरीन समाधान उपलब्ध होने पर इसे स्वयं बनाने का प्रयास न करें। यह आपको इतना समय, तनाव और पैसा बचाएगा! – Sliq

+0

@madarauchiha मैं और अधिक सहमत नहीं हो सका। असल में मुझे हाल ही में उस क्लाइंट के लिए इसे संभालना पड़ा जो समझ में नहीं आया कि एक असुरक्षित पृष्ठ पर एक jQuery मोडल से जेसनपी का उपयोग करना एक ठोस समाधान नहीं था। चूंकि उन्होंने * मोडल डिज़ाइन पर जोर दिया, इसलिए https लोड किए गए लॉगिन माइक्रो पेज को रखने के लिए एक आईफ्रेम समाधान लागू किया गया। सर्वश्रेष्ठ एक सुरक्षित लॉगिन पेज पर बस होगा, इसलिए उपयोगकर्ता देख सकता है कि वह एक सुरक्षित लिंक पर संचार कर रही है। हां, बस एक किराए पर बंदूक। –

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