मानक लाइब्रेरी का उपयोग करके अपनी पासवर्ड संग्रहण योजना को सुरक्षित रखने का सबसे आसान तरीका है ।
क्योंकि सुरक्षा बहुत अधिक जटिल हो जाती है और अधिकांश प्रोग्रामर की तुलना में अधिक अदृश्य पेंच संभावनाओं के साथ अकेले निपट सकते हैं, एक मानक पुस्तकालय का उपयोग करना लगभग हमेशा सबसे आसान और सबसे सुरक्षित होता है (यदि केवल नहीं) उपलब्ध विकल्प।
नया PHP पासवर्ड एपीआई (5.5.0+)
यदि आप PHP संस्करण 5.5.0 या नए का उपयोग कर रहे हैं, तो आप नए सरलीकृत पासवर्ड हैशिंग एपीआई का उपयोग कर सकते हैं
PHP के पासवर्ड API का उपयोग करके कोड का उदाहरण:
<?php
// $hash is what you would store in your database
$hash = password_hash($_POST['password'], PASSWORD_DEFAULT, ['cost' => 12]);
// $hash would be the $hash (above) stored in your database for this user
$checked = password_verify($_POST['password'], $hash);
if ($checked) {
echo 'password correct';
} else {
echo 'wrong credentials';
}
(यदि आप अभी भी विरासत 5.3.7 या नए का उपयोग कर रहे हैं, तो आप निर्माण कार्यों में पहुँच के लिए ircmaxell / password_compat स्थापित कर सकते हैं )
नमकीन राख पर सुधार: काली मिर्च जोड़ें
यदि आप अतिरिक्त सुरक्षा चाहते हैं, तो सुरक्षा के लोग अब (2017) 'स्वचालित रूप से) नमकीन पासवर्ड हैश में ' काली मिर्च ' डालने की सलाह देते हैं।
: वहाँ एक सरल, ड्रॉप कक्षा में है कि सुरक्षित रूप से लागू इस पैटर्न, मेरा सुझाव है है
Netsilik / PepperedPasswords
( GitHub )।
यह एक एमआईटी लाइसेंस के साथ आता है, इसलिए आप इसका उपयोग कर सकते हैं, हालांकि आप चाहते हैं, यहां तक कि मालिकाना परियोजनाओं में भी।
उपयोग करने वाले कोड का उदाहरण Netsilik/PepperedPasswords:
<?php
use Netsilik/Lib/PepperedPasswords;
// Some long, random, binary string, encoded as hexadecimal; stored in your configuration (NOT in your Database, as that would defeat the entire purpose of the pepper).
$config['pepper'] = hex2bin('012345679ABCDEF012345679ABCDEF012345679ABCDEF012345679ABCDEF');
$hasher = new PepperedPasswords($config['pepper']);
// $hash is what you would store in your database
$hash = $hasher->hash($_POST['password']);
// $hash would be the $hash (above) stored in your database for this user
$checked = $hasher->verify($_POST['password'], $hash);
if ($checked) {
echo 'password correct';
} else {
echo 'wrong credentials';
}
OLD मानक पुस्तकालय
कृपया ध्यान दें: अब आपको इसकी आवश्यकता नहीं होनी चाहिए! यह केवल ऐतिहासिक उद्देश्यों के लिए यहां है।
एक नज़र डालें: पोर्टेबल PHP पासवर्ड हैशिंग ढाँचा : फ़ेग करें और सुनिश्चित करें कि आप CRYPT_BLOWFISHएल्गोरिथम का उपयोग करें यदि संभव हो तो।
कोड का उदाहरण का उपयोग कर phpass (v0.2):
<?php
require('PasswordHash.php');
$pwdHasher = new PasswordHash(8, FALSE);
// $hash is what you would store in your database
$hash = $pwdHasher->HashPassword( $password );
// $hash would be the $hash (above) stored in your database for this user
$checked = $pwdHasher->CheckPassword($password, $hash);
if ($checked) {
echo 'password correct';
} else {
echo 'wrong credentials';
}
PHPass कुछ प्रसिद्ध परियोजनाओं में लागू किया गया है:
- phpBB3
- वर्डप्रेस 2.5+ के साथ-साथ bbPress
- Drupal 7 रिलीज़, (Drupal 5 और 6 के लिए उपलब्ध मॉड्यूल)
- अन्य
अच्छी बात यह है कि आपको विवरणों के बारे में चिंता करने की आवश्यकता नहीं है, उन विवरणों को अनुभव वाले लोगों द्वारा प्रोग्राम किया गया है और इंटरनेट पर कई लोगों द्वारा समीक्षा की गई है।
पासवर्ड भंडारण योजनाओं के बारे में अधिक जानकारी के लिए, जेफ के ब्लॉग पोस्ट को पढ़ें : आप संभवतः गलत तरीके से पासवर्ड स्टोर कर रहे हैं
जो भी हो अगर तुम 'के लिए जाना तुम क्या मैं इसे अपने आप क्या करेंगे, धन्यवाद ' दृष्टिकोण, का उपयोग नहीं करते MD5या SHA1अब । वे अच्छे हैशिंग एल्गोरिथ्म हैं, लेकिन सुरक्षा उद्देश्यों के लिए टूटे हुए माने जाते हैं ।
वर्तमान में, क्रिप्ट का उपयोग करके , CRYPT_BLOWFISH के साथ सबसे अच्छा अभ्यास है।
PHP में CRYPT_BLOWFISH Bcrypt हैश का कार्यान्वयन है। Bcrypt ब्लोफिश ब्लॉक सिफर पर आधारित है, यह एल्गोरिथ्म को धीमा करने के लिए महंगा कुंजी सेटअप का उपयोग कर रहा है।