2013-09-30 5 views
12

मैनुअल के अनुसार: उपयोग करने से पहले function_exists का उपयोग करके http://www.sitepoint.com/password-hashing-in-php/(PHP 5 <5.5.0) के लिए password_hash() का विकल्प क्या है?

function generateHash($password) { 
    if (defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) { 
     $salt = '$2y$11$' . substr(md5(uniqid(rand(), true)), 0, 22); 
     return crypt($password, $salt); 
    } 
} 

मैं अपने कोड का प्रबंधन कर सकते हैं: password_hash इस समारोह (PHP 5 >= 5.5.0)

के लिए इस्तेमाल किया जा सकता एक वैकल्पिक तरीका खोजने के बाद मैं यहाँ से इस सरल समारोह पाया , लेकिन मेरा प्रश्न वैकल्पिक कोड के ऊपर है अगर यह सुरक्षित है या नहीं, या PHP के पुराने संस्करणों में कोई विकल्प है?

+2

प्रदान करने के उद्देश्य से 'क्रिप्ट()' एक पासवर्ड हैश उत्पन्न करेगा ... आपको नमक उत्पन्न करने की आवश्यकता नहीं है, लेकिन उस फ़ंक्शन में आपके पास अतिरिक्त अतिरिक्त चीज़ें हैं – upful

+0

ए ओएसओवाल के [पोर्टेबल PHP पासवर्ड हैशिंग ढांचे] (http://www.openwall.com/phpass/) (PHPass) देखें। यह उपयोगकर्ता पासवर्ड पर कई आम हमलों के खिलाफ कठोर है। – jww

उत्तर

16

पीएचपी संस्करणों के लिए < 5.3.7, मैं सलाह देते हैं:

http://www.openwall.com/phpass/

पीएचपी संस्करणों> = 5.3.7, उपयोग के लिए:

https://github.com/ircmaxell/password_compat

अपने स्वयं के लवण जनरेट कर रहा है बहुत कुछ पता है कि कैसे, क्योंकि एक अच्छा, उचित नमक के लिए बहुत सी एन्ट्रॉपी की आवश्यकता होती है। PHP में यह नमक उत्पन्न करना परेशानीजनक है, यही कारण है कि आप आमतौर पर /dev/urandom या openssl_random_pseudo_bytes जैसे इस स्ट्रिंग को प्रदान करने के लिए अन्य संसाधनों के आधार पर समाप्त होते हैं। मेरा विश्वास करो, यह ऐसा कुछ नहीं है जिसे आप गंभीर शोध और विचार के बिना स्वयं को आजमा सकते हैं।

नई password_* API का उपयोग कर की सिफारिश की है, लेकिन यह समस्या हो सकती है यदि आप PHP है, जो के पुराने संस्करणों का समर्थन करने के जहां PHPass में आता है की जरूरत है। होगा के लिए पीएचपी 5.2

+0

धन्यवाद, मैंने password_compact की कोशिश की लेकिन इसमें एक आवश्यक शर्त भी है जो होस्टिंग सर्वर पर PHP 5.4 के साथ नहीं मिली थी, इसलिए phppass एक आकर्षण की तरह काम करता था। Https://github.com/ircmaxell/password_compat पर अतिरिक्त जानकारी के लिए –

6

साथ उन लोगों के प्रति माह की मेजबानी की योजना $ 1 से नफरत है PHP के संस्करण> 5.3.7 लेकिन 5.5.0 से पहले, आप उसी व्यक्ति द्वारा लिखे गए संस्करण को विकसित किए गए https://github.com/ircmaxell/password_compat पर पासवर्ड_शैश का कार्यान्वयन पा सकते हैं जो अब PHP 5.5.0+ में लागू संस्करण विकसित किया गया है और जानबूझकर पिछड़ा संगतता

+1

+1 क्योंकि आपका उत्तर कुछ डुप्लिकेट है :) –

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