दिलचस्प पोस्ट
IPhone पर गैर-शक्ति-दो बनावट को प्रस्तुत करना कैसे सही ढंग से तर्क के साथ स्विफ्ट ब्लॉक में कमजोर स्वयं को संभालता है आंतरिक वर्ग को इंस्टेंटिएट करना Git http – क्रेडेंशियल्स को सुरक्षित रूप से याद रखें सूचक अभिव्यक्ति: * ptr ++, * ++ ptr और ++ * ptr चुंबकीय क्षेत्र एक्स, वाई, जीड वैल्यू को डिवाइस से वैश्विक संदर्भ फ्रेम में कनवर्ट करें लिंक किए गए एपिसोड के समूह की पहचान करें, जो एक साथ मिलते हैं स्क्रॉलव्यू टच हैंडलिंग के भीतर क्षैतिज स्केल दृश्य फ्रेमवर्क मॉड्यूल के अंदर गैर मॉड्यूलर हैडर शामिल करें सीमके: किस क्रम में फाइलें पार्सेड (कैशे, टूलचैन, …) हैं? मैं ggplot2 के दाईं ओर एक परिवर्तनशील पैमाने कैसे लगा सकता हूं? SQL सर्वर – एक SQL स्क्रिप्ट का निष्पादन बंद या तोड़ना क्यों करता है ('0'? 'ए': 'बी') ('0' == सच? 'ए': 'बी') से अलग व्यवहार करते हैं उद्देश्य-सी और स्विफ्ट यूआरएल एन्कोडिंग यूआरएल को लिंक्स में कन्वर्ट करने के लिए एक अच्छा रेगेक्स की आवश्यकता है, लेकिन अकेले मौजूदा लिंक को छोड़ दें

PHP में हैशिंग पासवर्ड के लिए आप बीक्रीप का उपयोग कैसे करते हैं?

हर अब और फिर मुझे सलाह "PHP, bcrypt नियमों में पासवर्ड संचय के लिए brypt का उपयोग करें" सुना है।

लेकिन bcrypt क्या है? पीएचएपी ऐसे किसी भी तरह की फ़ंक्शन की पेशकश नहीं करता है, विकिपीडिया एक फ़ाइल-एन्क्रिप्शन उपयोगिता और वेब खोजों के बारे में बब्बल्स सिर्फ अलग भाषाओं में ब्लॉफ़िश के कुछ कार्यान्वयन प्रकट करता है। अब ब्लॉफिश PHP में mcrypt जरिए भी उपलब्ध है, लेकिन पासवर्ड mcrypt में यह कैसे मदद करता है? ब्लॉफ़िश एक सामान्य प्रयोजन सिफर है, यह दो तरीकों से काम करता है अगर यह एन्क्रिप्ट किया जा सकता है, तो इसे डिक्रिप्ट किया जा सकता है। पासवर्डों को एक-तरफा हैशिंग फ़ंक्शन की आवश्यकता है

स्पष्टीकरण क्या है?

वेब के समाधान से एकत्रित समाधान "PHP में हैशिंग पासवर्ड के लिए आप बीक्रीप का उपयोग कैसे करते हैं?"

bcrypt एक हैशिंग एल्गोरिथ्म है जो हार्डवेयर के साथ स्केलेबल है (राउंड की एक कॉन्फ़िगर योग्य संख्या के माध्यम से) इसकी धीमी गति और कई राउंड यह सुनिश्चित करता है कि एक आक्रमणकारी को आपके पासवर्ड को क्रैक करने में सक्षम होने के लिए भारी धन और हार्डवेयर को नियुक्त करना चाहिए। उस प्रति-पासवर्ड bcrypt जोड़ें ( bcrypt लवण) और आप यह सुनिश्चित कर सकते हैं कि कोई भी धन या हार्डवेयर की हद तक रकम के बिना लगभग असंगत है।

bcrypt हैश पासवर्ड के लिए Eksblowfish एल्गोरिद्म का उपयोग करता है। हालांकि ईक्सब्लॉफ़िश और ब्लोफिश का एन्क्रिप्शन चरण बिल्कुल वैसा ही है, Eksblowfish का मुख्य शेड्यूल चरण यह सुनिश्चित करता है कि किसी भी बाद का राज्य नमक और कुंजी (उपयोगकर्ता पासवर्ड) दोनों पर निर्भर करता है, और दोनों राज्यों के ज्ञान के बिना कोई राज्य precomputed नहीं हो सकता है। इस मुख्य अंतर के कारण, bcrypt हैशिंग एल्गोरिथ्म है। आप पहले से ही नमक, गोल और कुंजी (पासवर्ड) जानने के बिना सादे पाठ पासवर्ड को पुनः प्राप्त नहीं कर सकते। [ स्रोत ]

Bcrypt का उपयोग कैसे करें:

PHP> = 5.5-देव का उपयोग करना

पासवर्ड हैशिंग फ़ंक्शंस अब सीधे PHP> = 5.5 में बनाया गया है । अब आप password_hash() का प्रयोग किसी पासवर्ड के एक bcrypt हैश बनाने के लिए कर सकते हैं:

 <?php // Usage 1: echo password_hash('rasmuslerdorf', PASSWORD_DEFAULT)."\n"; // $2y$10$xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx // For example: // $2y$10$.vGA1O9wmRjrwAVXD98HNOgsNpDczlqm3Jq7KnEd1rVAGv3Fykk1a // Usage 2: $options = [ 'cost' => 11 ]; echo password_hash('rasmuslerdorf', PASSWORD_BCRYPT, $options)."\n"; // $2y$11$6DP.V0nO7YI3iSki4qog6OQI5eiO6Jnjsqg7vdnb.JgGIsxniOn4C 

एक मौजूदा हैश के खिलाफ उपयोगकर्ता प्रदान की गई पासवर्ड की पुष्टि करने के लिए, आप password_verify() उपयोग इस प्रकार कर सकते हैं:

 <?php // See the password_hash() example to see where this came from. $hash = '$2y$07$BCryptRequires22Chrcte/VlQH0piJtjXl.0t1XkA8pw9dMXTpOq'; if (password_verify('rasmuslerdorf', $hash)) { echo 'Password is valid!'; } else { echo 'Invalid password.'; } 

PHP> = 5.3.7, <5.5-देव (भी RedHat PHP> = 5.3.3) का उपयोग करना

मूल रूप से सी में लिखे गए उपरोक्त कार्यों के स्रोत कोड के आधार पर बनाई गई गीथहब पर संगतता लाइब्रेरी है, जो समान कार्यक्षमता प्रदान करता है। संगतता लाइब्रेरी स्थापित होने के बाद, उपर्युक्त उपरोक्त समान है (यदि आप अभी भी 5.3.x शाखा पर हैं तो लघुकथा सरणी नोटेशन घटाएं)।

PHP <5.3.7 (निष्क्रिय) का उपयोग करना

आप इनपुट स्ट्रिंग के बीक्रिप्ट हैश उत्पन्न करने के लिए crypt() फ़ंक्शन का उपयोग कर सकते हैं। यह वर्ग स्वचालित रूप से लवण उत्पन्न कर सकता है और इनपुट के खिलाफ मौजूदा हैश को सत्यापित कर सकता है। यदि आप PHP के उच्च या 5.3.7 के बराबर संस्करण का उपयोग कर रहे हैं, तो यह अत्यधिक अनुशंसित है कि आप अंतर्निहित फ़ंक्शन या कंपैट लाइब्रेरी का उपयोग करें । यह विकल्प केवल ऐतिहासिक उद्देश्यों के लिए प्रदान किया गया है

 class Bcrypt { private $rounds; public function __construct($rounds = 12) { if (CRYPT_BLOWFISH != 1) { throw new Exception("bcrypt not supported in this installation. See http://php.net/crypt"); } $this->rounds = $rounds; } public function hash($input) { $hash = crypt($input, $this->getSalt()); if (strlen($hash) > 13) return $hash; return false; } public function verify($input, $existingHash) { $hash = crypt($input, $existingHash); return $hash === $existingHash; } private function getSalt() { $salt = sprintf('$2a$%02d$', $this->rounds); $bytes = $this->getRandomBytes(16); $salt .= $this->encodeBytes($bytes); return $salt; } private $randomState; private function getRandomBytes($count) { $bytes = ''; if (function_exists('openssl_random_pseudo_bytes') && (strtoupper(substr(PHP_OS, 0, 3)) !== 'WIN')) { // OpenSSL is slow on Windows $bytes = openssl_random_pseudo_bytes($count); } if ($bytes === '' && is_readable('/dev/urandom') && ($hRand = @fopen('/dev/urandom', 'rb')) !== FALSE) { $bytes = fread($hRand, $count); fclose($hRand); } if (strlen($bytes) < $count) { $bytes = ''; if ($this->randomState === null) { $this->randomState = microtime(); if (function_exists('getmypid')) { $this->randomState .= getmypid(); } } for ($i = 0; $i < $count; $i += 16) { $this->randomState = md5(microtime() . $this->randomState); if (PHP_VERSION >= '5') { $bytes .= md5($this->randomState, true); } else { $bytes .= pack('H*', md5($this->randomState)); } } $bytes = substr($bytes, 0, $count); } return $bytes; } private function encodeBytes($input) { // The following is code from the PHP Password Hashing Framework $itoa64 = './ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $output = ''; $i = 0; do { $c1 = ord($input[$i++]); $output .= $itoa64[$c1 >> 2]; $c1 = ($c1 & 0x03) << 4; if ($i >= 16) { $output .= $itoa64[$c1]; break; } $c2 = ord($input[$i++]); $c1 |= $c2 >> 4; $output .= $itoa64[$c1]; $c1 = ($c2 & 0x0f) << 2; $c2 = ord($input[$i++]); $c1 |= $c2 >> 6; $output .= $itoa64[$c1]; $output .= $itoa64[$c2 & 0x3f]; } while (true); return $output; } } 

आप इस तरह इस कोड का उपयोग कर सकते हैं:

 $bcrypt = new Bcrypt(15); $hash = $bcrypt->hash('password'); $isGood = $bcrypt->verify('password', $hash); 

वैकल्पिक रूप से, आप पोर्टेबल PHP हैशिंग फ्रेमवर्क का उपयोग भी कर सकते हैं।

तो, आप बीसीक्रिप्ट का उपयोग करना चाहते हैं? बहुत बढ़िया! हालांकि, क्रिप्टोग्राफी के अन्य क्षेत्रों की तरह, आपको इसे स्वयं नहीं करना चाहिए यदि आपको कुंजियों के प्रबंधन, या लवण को संग्रहीत या यादृच्छिक संख्या उत्पन्न करने के बारे में चिंता करने की आवश्यकता है, तो आप इसे गलत कर रहे हैं

इसका कारण सरल है: बीसीआरपीटी को स्क्रू करना इतना आसान है वास्तव में, यदि आप इस पृष्ठ पर लगभग हर टुकड़े को देखते हैं, तो आप देखेंगे कि यह कम से कम इन आम समस्याओं का उल्लंघन कर रहा है

फेस आईट, क्रिप्टोग्राफी कठिन है।

विशेषज्ञों के लिए इसे छोड़ दें उन लोगों के लिए छोड़ दो, जो नौकरी करते हैं, इन पुस्तकालयों को बनाए रखना है। यदि आपको कोई निर्णय करने की आवश्यकता है, तो आप इसे गलत कर रहे हैं।

इसके बजाय, सिर्फ एक लाइब्रेरी का उपयोग करें आपकी आवश्यकताओं के आधार पर कई मौजूद हैं

पुस्तकालय

यहां कुछ सामान्य एपीआई का टूटना है।

PHP 5.5 एपीआई – (5.3.7+ के लिए उपलब्ध है)

PHP 5.5 में शुरू करने के लिए, हैशिंग पासवर्ड के लिए एक नया एपीआई पेश किया जा रहा है। 5.3.7+ के लिए बनाए गए एक शिम संगतता लाइब्रेरी भी है (मेरे द्वारा) इसके कार्यान्वयन का उपयोग करने के लिए सहकर्मी की समीक्षा और सरल होने का लाभ होता है

 function register($username, $password) { $hash = password_hash($password, PASSWORD_BCRYPT); save($username, $hash); } function login($username, $password) { $hash = loadHashByUsername($username); if (password_verify($password, $hash)) { //login } else { // failure } } 

वास्तव में, इसका उद्देश्य बेहद सरल है।

संसाधन:

  • प्रलेखन: PHP.net पर
  • संगतता लाइब्रेरी: गिटहब पर
  • PHP का RFC: wiki.php.net पर

ज़ेंड \ क्रिप्ट \ पासवर्ड \ बीक्रिप्ट (5.3.2+)

यह एक और एपीआई है जो PHP 5.5 के समान है, और एक समान प्रयोजन करता है।

 function register($username, $password) { $bcrypt = new Zend\Crypt\Password\Bcrypt(); $hash = $bcrypt->create($password); save($user, $hash); } function login($username, $password) { $hash = loadHashByUsername($username); $bcrypt = new Zend\Crypt\Password\Bcrypt(); if ($bcrypt->verify($password, $hash)) { //login } else { // failure } } 

संसाधन:

  • दस्तावेज़ीकरण: ज़ेंड पर
  • ब्लॉग पोस्ट: जेड क्रिप्ट के साथ पासवर्ड हैशिंग

PasswordLib

यह पासवर्ड हैशिंग के लिए थोड़ा अलग दृष्टिकोण है। बस बीक्रीप्ट का समर्थन करने के बजाय, पासवर्डएलब बड़ी संख्या में हैशिंग एल्गोरिदम का समर्थन करता है। यह उन संदर्भों में मुख्य रूप से उपयोगी है जहां आपको विरासत और पृथक प्रणालियों के साथ संगतता का समर्थन करने की आवश्यकता होती है जो आपके नियंत्रण से बाहर हो सकती हैं। यह हैशिंग एल्गोरिदम की एक बड़ी संख्या का समर्थन करता है। और 5.3.2+ समर्थित है

 function register($username, $password) { $lib = new PasswordLib\PasswordLib(); $hash = $lib->createPasswordHash($password, '$2y$', array('cost' => 12)); save($user, $hash); } function login($username, $password) { $hash = loadHashByUsername($username); $lib = new PasswordLib\PasswordLib(); if ($lib->verifyPasswordHash($password, $hash)) { //login } else { // failure } } 

संदर्भ:

  • स्रोत कोड / दस्तावेज: गिटहब

PHPass

यह एक ऐसी परत है जो बीसीआरपीपी का समर्थन करता है, लेकिन यह भी एक काफी मजबूत एल्गोरिथ्म का समर्थन करता है जो आपके पास PHP> = 5.3.2 तक पहुंच नहीं है, यह उपयोगी है … यह वास्तव में PHP 3.0+ का समर्थन करता है (हालांकि बीक्रीप्ट के साथ नहीं)।

 function register($username, $password) { $phpass = new PasswordHash(12, false); $hash = $phpass->HashPassword($password); save($user, $hash); } function login($username, $password) { $hash = loadHashByUsername($username); $phpass = new PasswordHash(12, false); if ($phpass->CheckPassword($password, $hash)) { //login } else { // failure } } 

साधन

  • कोड: सीवीएसवेब
  • परियोजना स्थल: ओपनवाल्ले पर
  • <5.3.0 एल्गोरिदम की समीक्षा: स्टैक ओवरफ्लो पर

नोट: PHPASS विकल्प का उपयोग न करें जो कि ओपनवाल पर होस्ट नहीं हैं, वे अलग-अलग परियोजनाएं हैं !!!

BCrypt के बारे में

यदि आप ध्यान देते हैं, तो इनमें से हर पुस्तकालय एक स्ट्रिंग लौटाता है यही कारण है कि कैसे BCrypt आंतरिक रूप से काम करता है और उसके बारे में जवाब के एक टन हैं यहां एक चयन किया गया है जिसे मैंने लिखा है, कि मैं यहां प्रतिलिपि नहीं / चिपकाएगा, लेकिन इससे लिंक:

  • हैशिंग और एन्क्रिप्शन एल्गोरिदम के बीच मूलभूत अंतर – उनके बारे में शब्दावली और कुछ बुनियादी जानकारी समझाते हुए।
  • इंद्रधनुष तालिकाओं के बिना हैश पीछे करने के बारे में – असल में हमें पहली जगह में बीसीआरपी का इस्तेमाल करना चाहिए …
  • बीक्रीप्प होशेस को संग्रहीत करना – मूल रूप से हैश परिणाम में शामिल नमक और एल्गोरिथ्म क्यों है
  • बीक्रिप्ट हैश की लागत को कैसे अपडेट किया जाए – मूल रूप से बीसीआरिप हैश की लागत को कैसे चुनना और उसके बाद बनाए रखना चाहिए।
  • कैसे bcrypt के साथ लंबी पासवर्ड हैश करने के लिए – बीसीआरपीटी की 72 वर्ण पासवर्ड सीमा को समझाया।
  • कैसे bcrypt लवण का उपयोग करता है
  • सल्टिंग और पेपरिंग पासवर्ड का सर्वोत्तम अभ्यास – मूलतः, एक "काली मिर्च" का उपयोग न करें
  • पुराने md5 पासवर्ड को बीक्रीप्ट में माइग्रेट करना

लपेटें

कई अलग-अलग विकल्प हैं जो आप चुनते हैं वह आप पर निर्भर है हालांकि, मैं अत्यधिक अनुशंसा करता हूं कि आप इसके लिए उपर्युक्त पुस्तकालयों में से एक का उपयोग करें।

दोबारा, यदि आप सीधे crypt() का उपयोग कर रहे हैं, तो आप शायद कुछ गलत कर रहे हैं यदि आपका कोड hash() (या md5() या sha1() ) का उपयोग कर रहा है, तो आप लगभग निश्चित रूप से कुछ गलत कर रहे हैं

बस एक पुस्तकालय का उपयोग करें …

आपको इंद्रधनुष टेबल्स के साथ पर्याप्त जानकारी मिलेगी : आपको सुरक्षित पासवर्ड स्कीमों या पोर्टेबल PHP पासवर्ड हैशिंग फ़्रेमवर्क के बारे में जानने की आवश्यकता है

लक्ष्य को कुछ धीमा के साथ पासवर्ड हैश करने के लिए है, इसलिए किसी को आपका पासवर्ड डेटाबेस प्राप्त करने के लिए यह जबरदस्त बल की कोशिश कर रहा होगा (एक पासवर्ड की जांच करने के लिए 10 एमएस की देरी आपके लिए कुछ भी नहीं है, किसी को भी यह जबरदस्त बल की कोशिश कर रहा है)। बीक्रिप्ट धीमा है और यह चुनने के लिए एक पैरामीटर के साथ प्रयोग किया जा सकता है कि यह कितनी धीमे है

आप PHP के crypt() फ़ंक्शन का उपयोग करके बीसीआरपी के साथ एक तरह से हैश बना सकते हैं और उपयुक्त ब्लॉफ़िश नमक में गुजर सकते हैं। संपूर्ण समीकरण का सबसे महत्वपूर्ण यह है कि ए) एल्गोरिथ्म से समझौता नहीं किया गया है और बी) आप प्रत्येक पासवर्ड ठीक से नमक करते हैं । एप्लिकेशन-वाइड नमक का उपयोग न करें; जो इंद्रधनुष तालिकाओं के एक सेट से हमला करने के लिए आपके संपूर्ण एप्लिकेशन को खोलता है।

PHP – क्रिप्ट फ़ंक्शन


संपादित करें: 2013.01.15 – यदि आपका सर्वर इसका समर्थन करेगा, तो इसके बजाय मार्टस्टेक्की के समाधान का उपयोग करें।


हर कोई इस से अधिक जटिल बनाना चाहता है। क्रिप्ट () फ़ंक्शन, अधिकांश काम करता है

 function blowfishCrypt($password,$cost) { $chars='./ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789'; $salt=sprintf('$2y$%02d$',$cost); //For PHP < PHP 5.3.7 use this instead // $salt=sprintf('$2a$%02d$',$cost); //Create a 22 character salt -edit- 2013.01.15 - replaced rand with mt_rand mt_srand(); for($i=0;$i<22;$i++) $salt.=$chars[mt_rand(0,63)]; return crypt($password,$salt); } 

उदाहरण:

 $hash=blowfishCrypt('password',10); //This creates the hash $hash=blowfishCrypt('password',12); //This creates a more secure hash if(crypt('password',$hash)==$hash){ /*ok*/ } //This checks a password 

मुझे पता है कि यह स्पष्ट होना चाहिए, लेकिन कृपया अपना पासवर्ड के रूप में 'पासवर्ड' का उपयोग न करें।

PHP के संस्करण 5.5 में BCrypt के लिए अंतर्निहित समर्थन होगा, password_hash() और password_verify() । वास्तव में ये फ़ंक्शन crypt() आस-पास केवल रैपर हैं, और इसे सही ढंग से उपयोग करने में आसान बनाते हैं यह एक सुरक्षित यादृच्छिक नमक की पीढ़ी का ख्याल रखता है, और अच्छा डिफ़ॉल्ट मान प्रदान करता है

इस फ़ंक्शन का उपयोग करने का सबसे आसान तरीका यह होगा:

 $hashToStoreInDb = password_hash($password, PASSWORD_BCRYPT); $isPasswordCorrect = password_verify($password, $existingHashFromDb); 

यह कोड BCrypt (एल्गोरिथ्म 2y ) के साथ पासवर्ड हैश करेगा, ओएस यादृच्छिक स्रोत से एक यादृच्छिक नमक उत्पन्न करता है, और डिफ़ॉल्ट लागत पैरामीटर का उपयोग करता है (इस समय यह 10 है)। दूसरी लाइन की जांच करता है, अगर उपयोगकर्ता ने पासवर्ड दर्ज किया है तो पहले से संग्रहीत हैश-मान से मेल खाता है।

क्या आप लागत पैरामीटर को बदलना चाहते हैं, आप इसे ऐसा कर सकते हैं, लागत पैरामीटर 1 से बढ़ाकर, हैश मान की गणना करने के लिए आवश्यक समय में युगल हो सकता है:

 $hash = password_hash($password, PASSWORD_BCRYPT, array("cost" => 11)); 

"cost" पैरामीटर के विपरीत, "salt" पैरामीटर को छोड़ना सबसे अच्छा है, क्योंकि फ़ंक्शन पहले से ही क्रिप्टोग्राफ़िक सुरक्षित नमक बनाने के लिए सबसे अच्छा है।

PHP संस्करण 5.3.7 और बाद के लिए, एक समान लेखक से एक संगतता पैक मौजूद है जो password_hash() फ़ंक्शन बनाते password_hash() । 5.3.7 से पहले PHP संस्करणों के लिए crypt() साथ 2y लिए कोई समर्थन नहीं है, यूनिकोड सुरक्षित बीक्रिप्ट एल्गोरिथम। किसी को इसके बजाय 2a स्थान पर ले 2a जा सकता है, जो पहले के PHP संस्करणों के लिए सबसे अच्छा विकल्प है।

एक विकल्प स्क्रीप्ट का उपयोग करना है, विशेष रूप से अपने पेपर में कॉलिन पर्सिवल द्वारा बीसीआरप्पट से बेहतर बनाने के लिए डिज़ाइन किया गया है। पीईसीएल में एक स्क्रीप्ट PHP एक्सटेंशन है आदर्श रूप से यह एल्गोरिथ्म PHP में लुढ़का जाएगा, ताकि यह पासवर्ड_ * फ़ंक्शन के लिए निर्दिष्ट किया जा सके (आदर्श रूप में "PASSWORD_SCRYPT"), लेकिन वह अभी तक नहीं है।

वर्तमान सोच: हैश सबसे धीमी गति से उपलब्ध होना चाहिए, संभवतः सबसे तेजी से संभव नहीं। यह इंद्रधनुष तालिका हमलों को दबा देता है

इसके अलावा संबंधित है, लेकिन एहतियाती: एक हमलावर को आपके लॉगिन स्क्रीन पर असीमित एक्सेस नहीं होना चाहिए। इसे रोकने के लिए: एक आईपी पता ट्रैकिंग तालिका सेट करें जो यूआरआई के साथ हर हिट रिकॉर्ड करती है। यदि प्रवेश करने के 5 से अधिक प्रयास समान आईपी पते से किसी भी पांच मिनट की अवधि में आते हैं, तो स्पष्टीकरण के साथ ब्लॉक करें। एक द्वितीयक दृष्टिकोण है कि दो-स्तरीय पासवर्ड स्कीम हो, जैसे बैंक करते हैं दूसरे पास पर विफलताओं के लिए लॉक-आउट डाल देना सुरक्षा को बढ़ा देता है

सारांश: समय लेने वाला हैश फ़ंक्शन का उपयोग करके हमलावर को धीमा कर दें। साथ ही, अपने लॉगिन में बहुत अधिक एक्सेस पर ब्लॉक करें, और एक दूसरे पासवर्ड स्तरीय जोड़ें।

ओअथ 2 पासवर्ड के लिए:

 $bcrypt = new \Zend\Crypt\Password\Bcrypt; $bcrypt->create("youpasswordhere", 10)