Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

उपयोगकर्ता को लॉग इन रखने का सही और सुरक्षित/सुरक्षित तरीका क्या है? कुकीज़? सत्र? पीएचपी &&MySQL

सबसे पहले, मैं आपको यह बता दूं। कुछ भी 100% सुरक्षित नहीं है। कुछ भी एयर टाइट नहीं है, और कुछ भी पवित्र नहीं है। यदि पर्याप्त रूप से प्रेरित किया जाता है, तो एक हमलावर आपके द्वारा लगाए गए प्रत्येक सर्वर-साइड रक्षा को तोड़ देगा (जब तक कि आप HTTPS का उपयोग नहीं कर रहे हों, जो एक अलग कहानी है)।

आप कुकीज़ का उपयोग कर सकते हैं, लेकिन कुकीज़ अत्यधिक उजागर होती हैं और आसानी से संशोधित होती हैं। कुकी में कभी भी निजी डेटा या एक्सेस स्तरों को संग्रहीत न करें। चूंकि यह एक हमलावर द्वारा आसानी से चुराया/बदला जाता है।

सत्र भी 100% सुरक्षित नहीं हैं। सत्र आईडी, जिसे सर्वर क्लाइंट की पहचान करने के लिए उपयोग करता है, 2 में से किसी एक तरीके से भेजा जाता है। एक $_GET चर (खराब), या एक कुकी (बेहतर, लेकिन अभी भी बहुत खराब)। मतलब, यदि आप एक असुरक्षित वाईफाई पर व्यवस्थापक के रूप में लॉग इन हैं, तो एक कुशल हमलावर (और कुशल से मेरा मतलब एक pr0 haxx0r है जिसने एक साधारण HTTP स्निफर डाउनलोड किया है) आसानी से आपकी सत्र आईडी चुरा सकता है। और आपका पासवर्ड नहीं मिलने पर, सर्वर गलत तरीके से हमलावर की पहचान आपके रूप में करेगा, और उसे आपके पास मौजूद/होने वाली कोई भी एक्सेस प्रदान करेगा।

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

userid=12345
hash=password_hash($userid . $hashed_password, PASSWORD_DEFAULT)

फिर मेरे पास मिलान करने के लिए कुछ है, और उपयोगकर्ता के विवरण का खुलासा नहीं किया गया था।

लेकिन जैसा कि मैंने कहा, दिन के अंत में, यदि आप वास्तव में वास्तव में अपने उपयोगकर्ताओं को सुरक्षित करना चाहते हैं, तो ऊपर इस उत्तर में लिखी गई हर चीज़ के लिए, अपने आप को HTTPS प्राप्त करें।



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या मैं MySQL के अंतर्गत सीधे SQL में HTTP GET चला सकता हूँ?

  2. हाइबरनेट के साथ आलसी लाने वाला सिंगल कॉलम (वर्ग विशेषता)

  3. MySQL - औसत घंटे निर्धारित करने के लिए JOIN और WHERE का उपयोग करना

  4. बाइनरी फ़ील्ड के साथ कैसे चयन करें? (पीएचपी, MySQL)

  5. अल्पविराम मानों वाली तालिकाओं में शामिल हों