आप एक उपयोगकर्ता के रूप में नहीं जानते कि पासवर्ड कैसे एन्क्रिप्ट किया गया है (यह वास्तव में एन्क्रिप्टेड नहीं है, लेकिन हैश किया गया है)।
आप बस पासवर्ड पास करते हैं, और MySQL मूल पासवर्ड की तरह ही हैशिंग कर सकता है और इसकी तुलना संग्रहीत की गई चीज़ों से कर सकता है। यदि आप हैश किए गए संस्करण को पास करते हैं, तो हैशिंग का पूरा लाभ समाप्त हो जाता है:यदि किसी को सर्वर से हैश मिलता है, तो वे लॉग इन करने के लिए उनका उपयोग कर सकते हैं जैसे कि वे सामान्य पासवर्ड थे। हैश तब पासवर्ड बन गया है।
अतिरिक्त लाभ यह है कि MySQL, क्योंकि इसका मूल पासवर्ड है, इसे बेहतर एल्गोरिदम के साथ फिर से हैश कर सकता है, थोड़ा सा नमक जोड़ सकता है और उस बेहतर संस्करण को स्टोर कर सकता है। अगर इसे मूल कभी नहीं मिलता है, तो ऐसा नहीं किया जा सकता है। PHP का पासवर्ड कार्य करता है
इसका भी समर्थन करें। आप password_needs_rehash
. से जांच सकते हैं यदि हैशेड पासवर्ड अभी भी ठीक से हैश किया गया है, और यदि नहीं है तो अपने डेटाबेस को अपडेट करें।
इसलिए सुरक्षा के लिए आपको अन्य उपाय करने होंगे। ये कम से कम हैं:
- पासवर्ड को एक शामिल फ़ाइल में संग्रहीत करें जो दस्तावेज़ रूट के बाहर रहती है। इस तरह, कोई भी उस फ़ाइल को सीधे नहीं खोल सकता।
- आप शामिल किए बिना खोली जाने वाली फ़ाइलों को शामिल करने से रोक सकते हैं (उदाहरण के लिए index.php में सेट की गई परिभाषा की जांच करके)। यह अच्छा है, लेकिन अगर कॉन्फ़िगरेशन त्रुटि के कारण PHP विफल हो जाता है, तो लोग फ़ाइल के स्रोत को ब्राउज़ कर सकते हैं, इसलिए पिछले नियम को बनाए रखें।
- हमेशा एक विशेष डेटाबेस उपयोगकर्ता बनाएं।
root
का प्रयोग न करें . इस उपयोगकर्ता को डेटाबेस संचालित करने का पर्याप्त अधिकार दें, लेकिन अब और नहीं। उदाहरण के लिए टेबल ड्रॉप करने का कोई अधिकार नहीं है। - उस उपयोगकर्ता को हमेशा एक अद्वितीय पासवर्ड दें। आपको यह पासवर्ड याद रखने की जरूरत नहीं है। ढेर सारे पात्रों के साथ यादृच्छिक कचरा उत्पन्न करें।
- पासवर्ड को नियमित रूप से बदलें। हो सकता है कि आप इसे स्क्रिप्ट भी कर सकें और अपडेट किए गए पासवर्ड को कॉन्फिग में स्टोर कर सकें।