सभी को नमस्कार! पिछले हफ्ते, हमने इस लेख
का पहला भाग प्रकाशित किया, जिससे एक गंभीर होलिवर हुआ।
मुख्य शिकायतों में से एक लेख में password_hash
के उल्लेख की कमी थी, जैसा कि हमने वादा किया था, इस सामग्री का दूसरा भाग पासवर्ड हैश का उपयोग करते हुए password_hash
साथ ही शुरू होगा। हम आपको यह भी याद दिलाते हैं कि इस लेख का लेखन "बैकएंड PHP डेवलपर" पाठ्यक्रम पर एक नए समूह के लॉन्च से प्रेरित था, लेकिन इस सामग्री का प्रशिक्षण कार्यक्रम से कोई लेना-देना नहीं है।
आप खुले घर में प्रशिक्षण कार्यक्रम के बारे में अधिक जान सकते हैं , और "सर्वरलेस PHP" विषय पर एक मुफ्त वेबिनार के उदाहरण के साथ, आप व्याख्यान के प्रारूप का मूल्यांकन कर सकते हैं।
शायद हम निष्कर्ष निकालेंगे कि यह पहले से ही प्रचलित प्रस्तावना है और सीधे लेख पर जाएं।
पासवर्ड हैश के साथ पासवर्ड_हश
यह फ़ंक्शन एक पासवर्ड हैश बनाता है जो हमारे द्वारा निर्धारित मापदंडों के अनुसार है। यह एक तरफ़ा एल्गोरिथ्म का उपयोग करता है।
हम अपनी पसंद के स्थिरांक को सेट करके किस प्रकार के एल्गोरिदम का उपयोग कर सकते हैं:
- PHP 5.5 से
PASSWORD_DEFAULT
डिफ़ॉल्ट एल्गोरिथ्म के रूप में Bcrypt का उपयोग करता है। हालांकि, समय के साथ, यह नए, अधिक सुरक्षित एल्गोरिदम या अन्य कारकों के रूप में बदल जाता है। PASSWORD_BCRYPT
एक crypt()
हैश बनाता है। आम तौर पर इसमें 60 अक्षर होते हैं, इसे "$ 2y $" प्रारूप में इसके पहचानकर्ता द्वारा पहचाना जा सकता है।PASSWORD-ARGON2I
आर्गन 2 वर्तमान में सबसे सुरक्षित हैशिंग एल्गोरिदम में से एक है। यह केवल तभी उपलब्ध है जब PHP Argon2 के साथ संकलित किया गया था।PASSWORD_ARGON2ID
यह हैश एल्गोरिथ्म भी आर्गन 2 परिवार से संबंधित है और Argon2ID के संस्करण का उपयोग करता है, न कि I. काम करने के लिए, यह भी आवश्यक है कि PHP को Argon2 का उपयोग करके संकलित किया जाए।
इस फ़ंक्शन में एक वैकल्पिक पैरामीटर भी है, जिसमें एक साहचर्य सरणी शामिल है जो चयनित एल्गोरिथ्म के अनुसार कई कुंजी स्वीकार करता है।
यदि आप Bcrypt का उपयोग करना पसंद करते हैं, तो इस क्रम की कुंजी मूल्य लागत होगी।
यदि आप एक एल्गोरिथ्म चुनते हैं जो Argon2 का उपयोग करता है, तो साहचर्य सरणी के लिए कुंजी होगी:
memory_cost
(हैश की गणना करने के लिए आवश्यक अधिकतम मात्रा में मेमोरी दर्शाता है),
time_cost
(हैश और गणना करने के लिए आवश्यक अधिकतम सूचक को इंगित करता है) और
thread
(अन्य पूर्णांक) एक संख्या जो हैश की गणना के लिए उपयोग किए जाने वाले थ्रेड्स की संख्या को दर्शाती है)।
PHP 7.0 में
salt
पैरामीटर को निर्दिष्ट न करें, अन्यथा आप पदावनत दृष्टिकोण के बारे में चेतावनी प्राप्त करेंगे।
अब हम जानते हैं कि
password_hash()
फ़ंक्शन का उपयोग करने के लिए किन तत्वों की आवश्यकता है। आइए देखें कि इसे कैसे संरक्षित किया जाए।
echo password_hash("MySuperPass", PASSWORD_DEFAULT); $2y$10$TLayAY8ZaAZ9FE50EylGYO9oEgrb7gsw1yzJemHdBu1gOQfyWrEUm $options = ['cost' => 12,]; echo password_hash("MySuperPass", PASSWORD_BCRYPT, $options); $2y$12$jhmTbxAuZXVtX2y.Jc8iy.dW/NENqVCeq2vuoFI9/oa4./YlzhpYO echo password_hash('rasmuslerdorf', PASSWORD_ARGON2I); $argon2i$v=19$m=1024,t=2,p=2$YzJBSzV4TUhkMzc3d3laeg$zqU/1IN0/AogfP4cmSJI1vc8lpXRW9/S0sYY2i2jHT0
सबसे पहले, इस फ़ंक्शन को अपने सर्वर पर परीक्षण करने और लागत पैरामीटर को कॉन्फ़िगर करने की सिफारिश की जाती है ताकि फ़ंक्शन का निष्पादन इंटरैक्टिव सिस्टम पर 100 मिलीसेकंड से कम हो।
उपरोक्त उदाहरण की स्क्रिप्ट आपको अपने हार्डवेयर के लिए इष्टतम लागत मूल्य निर्धारित करने में मदद करेगी।
उपयोगकर्ता का पासवर्ड सत्यापन
आपने उपयोगकर्ताओं को अपने नए एप्लिकेशन में पंजीकरण करने का अवसर दिया, वे वहां अपना पासवर्ड दर्ज कर सकते हैं, और आप अच्छी तरह जानते हैं कि इस पासवर्ड को कैसे संभालना है।
नवीनतम सुरक्षा रुझानों के अनुसार हैशिंग डेटा के द्वारा, आप एन्क्रिप्टेड रूप में कुछ भी संग्रहीत नहीं करते हैं, और आपका सर्वर 10 मीटर की गहराई के तहखाने में छिपा हुआ है।
अब क्याअब आपको उपयोगकर्ताओं को एप्लिकेशन में लॉग इन करने की अनुमति देनी होगी। ऐसा करने के लिए, PHP में एक अंतर्निहित फ़ंक्शन होता है जो हैशेड अनुक्रम से मेल खाते पासवर्ड की जांच करता है। इस फ़ंक्शन को
password_verify()
कहा जाता है। यह इस तरह काम करता है:
$hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if (password_verify('rasmuslerdorf', $hash)) { echo ' !'; } else { echo ' !'; }
उसके दो पैरामीटर हैं, और दोनों में एक अनुक्रम प्रारूप होना चाहिए। पहला पैरामीटर वह पासवर्ड होता है जिसे उपयोगकर्ता ने लॉगिन लॉगिन फॉर्म में दर्ज किया था। दूसरा पैरामीटर सीधे हैशेड डेटा है जिसके साथ हम परामर्श करेंगे।
नतीजतन, हमें एक तार्किक मूल्य मिलता है, सशर्त संचालन में उपयोग के लिए तैयार है। इस प्रकार, हम या तो उपयोगकर्ता को एप्लिकेशन में जाने दे सकते हैं या उसे सूचित कर सकते हैं कि कुछ गलत हुआ है।
यह फ़ंक्शन काम करता है क्योंकि पिछले चरण में (जब हमारे पास पासवर्ड हैशेड था),
password_hash
से लौटाए गए मूल्य में हमारे द्वारा उपयोग किए गए एल्गोरिदम,
cost
और
salt
।
इस प्रकार,
password_verify()
लिए आवश्यक सभी जानकारी हमारे पास उपलब्ध है।
PHP पर उपयोगकर्ता पंजीकरण प्रणाली का एल्गोरिथ्म
मुझे उम्मीद है कि अब आप पासवर्ड को हैंडल करते समय PHP डेवलपर्स द्वारा लिए जाने वाले सुरक्षा उपायों को समझेंगे।
पहले आपको पोस्ट-रिक्वेस्ट की जांच करने की आवश्यकता है, और फिर उन उपयोगकर्ताओं की संख्या का चयन करें और गणना करें जिनके डेटा दर्ज किए गए हैं।
यदि सब कुछ ठीक रहा, तो हम पासवर्ड को सत्यापित करते हैं और उपयोगकर्ता को प्रारंभ पृष्ठ पर भेजते हैं। अन्यथा, उदाहरण के लिए, जावास्क्रिप्ट पर हम एक त्रुटि सूचना के साथ एक चेतावनी विंडो प्रदर्शित करते हैं।
निष्कर्ष
अब आप जानते हैं कि अपने आवेदन की सुरक्षा कैसे सुनिश्चित करें और पासवर्ड को सही तरीके से कैसे संभालें। उपयोगी अनुशंसाओं का पालन करना केवल एक मानक नहीं है जिसका आपको पालन करना चाहिए, लेकिन एक विकास पथ जिसका पालन करना सुखद होना चाहिए।
नई तकनीकों के समान जानें कि आपने अभी कैसे सीखा। अतिरिक्त कार्यक्षमता जोड़ें और कोड के साथ प्रयोग करें जब तक आपको उत्कृष्ट वेब विकास कौशल प्राप्त न हो - चाहे वह PHP या कोई अन्य भाषा हो जो कोई कम अवसर नहीं खोलता है!
पहला भाग पढ़ें