दिलचस्प पोस्ट
एक्सप्रेस्ड मैप पर एक्स और वाई के मर्केटर रेखांश और अक्षांश की गणना (यूके के) पायथन 2 से urllib2 के साथ HTTP हेड अनुरोध बनाना प्रत्येक पाश के लिए 'उन्नत' का उपयोग करके जावा में एक सरणी को प्रारंभ करना एक EditText के लिए इनपुट टाइप करें? गो प्रोजेक्ट लेआउट का एक समझदार तरीका क्या है जब सी # में स्ट्रिंग में दिखता है तो {0} क्या मतलब है? ताला ऑब्जेक्ट को स्थैतिक क्यों होना चाहिए? क्या मुझे php.ini फ़ाइल को बदलने के बाद अपाचे को पुनरारंभ करने की आवश्यकता है? क्रिया बार को स्थायी रूप से अक्षम कैसे करें Excel स्प्रैडशीट के लिए multisheet को डेटाफ़्रेम की सूची सहेजें ईजेबी में स्थानीय / रिमोट और नो-इंटरफेस दृश्य क्या है? पायथन कक्षाओं में हम __init__ का उपयोग क्यों करते हैं? event.originalEvent jQuery चेनिंग अजाक्स को ऐंजलर जे में बुलाया गया मैं उस स्क्रिप्ट के भीतर से स्क्रिप्ट फ़ाइल नाम कैसे प्राप्त करूं?

पासवर्ड_हाश का उपयोग कैसे करें

हाल ही में मैं अपनी स्वयं की सुरक्षा को एक ऐसी लॉग स्क्रिप्ट पर कार्यान्वित करने की कोशिश कर रहा हूं जो मुझे इंटरनेट पर ठोकर खाई। प्रत्येक उपयोगकर्ता के लिए नमक उत्पन्न करने के लिए अपनी स्क्रिप्ट को कैसे बनाने की कोशिश करने की कोशिश करने के बाद, मैंने पासवर्ड_हेश पर ठोकर खाई।

मैं जो समझता हूं (इस पृष्ठ पर पढ़ने के लिए आधारित: http://php.net/manual/en/faq.passwords.php ), जब आप password_hash का उपयोग करते हैं तो नमक पहले से ही पंक्ति में उत्पन्न होता है क्या ये सच है?

एक और सवाल था, तो क्या यह 2 लवण नहीं होने वाला स्मार्ट होगा? एक फाइल में सीधे और एक डीबी में? इस तरह, अगर कोई आपके नमक को डीबी में समझौता करता है, तो क्या आपके पास फाइल में सीधे एक है? मैं यहाँ पढ़ता हूं कि लवण रखने से कभी कोई चतुर विचार नहीं होता है, लेकिन यह हमेशा मुझे भ्रमित करता है कि उसके द्वारा लोगों का क्या मतलब है।

Solutions Collecting From Web of "पासवर्ड_हाश का उपयोग कैसे करें"

Password_hash का इस्तेमाल पासवर्ड संग्रहीत करने का अनुशंसित तरीका है। उन्हें डीबी और फाइलों में अलग न करें

मान लें कि हमारे पास निम्न इनपुट है:

$password = $_POST['password']; 

मैं इस अवधारणा को समझने के लिए इनपुट को मान्य नहीं करता हूं

आप पहले ऐसा करने के द्वारा पासवर्ड हैश:

 $hashed_password = password_hash($password, PASSWORD_DEFAULT); 

फिर आउटपुट देखें:

 var_dump($hashed_password); 

जैसा कि आप देख सकते हैं कि यह हैश है (मुझे लगता है कि आप उन कदमों को किया था)।

अब आप अपने हैबेस में इस हैश_पासवर्ड को संग्रहीत करते हैं, और तब कहते हैं कि जब कोई उपयोगकर्ता इन्हें लॉग इन करने के लिए कहता है। आप डाटाबेस में इस हैश मान से पासवर्ड इनपुट की जांच करते हैं, ऐसा करके:

 // Query the database for username and password // ... if(password_verify($password, $hashed_password)) { // If the password inputs matched the hashed password in the database // Do something, you know... log them in. } // Else, Redirect them back to the login page. 

हां, आप इसे सही तरीके से समझते हैं, फ़ंक्शन password_hash () अपने आप पर एक नमक उत्पन्न करेगा, और परिणामस्वरूप हैश-मान में इसे शामिल करेगा। डाटाबेस में नमक जमा करना बिल्कुल सही है, यह काम करता है भले ही ज्ञात हो

 // Hash a new password for storing in the database. // The function automatically generates a cryptographically safe salt. $hashToStoreInDb = password_hash($_POST['password'], PASSWORD_DEFAULT); // Check if the hash of the entered login password, matches the stored hash. // The salt and the cost factor will be extracted from $existingHashFromDb. $isPasswordCorrect = password_verify($_POST['password'], $existingHashFromDb); 

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

नमक के विपरीत, इस कुंजी को गुप्त रखा जाना चाहिए लोग अक्सर इसे मिक्स करते हैं और नमक को छिपाने की कोशिश करते हैं, लेकिन नमक को इसका काम करना बेहतर होता है और एक चाबी के साथ रहस्य जोड़ना

हाँ यह सच हे। फ़ंक्शन पर आपको पीएचपी के बारे में संदेह क्यों है? 🙂

चल रहे password_hash() परिणाम में चार भागों हैं:

  1. इस्तेमाल किया एल्गोरिथ्म
  2. मापदंडों
  3. नमक
  4. वास्तविक पासवर्ड हैश

जैसे कि आप देख सकते हैं, हैश इसका एक हिस्सा है।

ज़रूर, आपके पास सुरक्षा की एक अतिरिक्त परत के लिए अतिरिक्त नमक हो सकता है, लेकिन मैं ईमानदारी से सोचता हूं कि एक नियमित पीएचपी आवेदन में ओवरकिल है। डिफ़ॉल्ट बीक्रिप्ट एल्गोरिदम अच्छा है, और वैकल्पिक ब्लॉफ़िश एक तर्कसंगत भी बेहतर है।

कभी भी नमक के साथ अपना पासवर्ड सुरक्षित करने के लिए एमडी 5 () का उपयोग न करें, यह हमेशा खतरनाक होता है !!

अपने पासवर्ड को नवीनतम हैशिंग एल्गोरिदम के साथ सुरक्षित रखें।

 <?php // Your original Password $password = '121@121'; //PASSWORD_BCRYPT or PASSWORD_DEFAULT use any in the 2nd parameter /* PASSWORD_BCRYPT always results 60 characters long string. PASSWORD_DEFAULT capacity is beyond 60 characters */ $password_encrypted = password_hash($password, PASSWORD_BCRYPT); ?> 

डेटाबेस के एन्क्रिप्ट किए गए पासवर्ड और उपयोगकर्ता इनपुट किए गए पासवर्ड के साथ मिलान करने के लिए नीचे फ़ंक्शन का उपयोग करें।

 <?php if (password_verify($password_inputted_by_user, $password_encrypted)) { // Success! echo 'Password Matches'; }else { // Invalid credentials echo 'Password Mismatch'; } ?> 

यदि आप अपने नमक का उपयोग करना चाहते हैं, तो इसके लिए अपने कस्टम निर्मित फ़ंक्शन का उपयोग करें, बस नीचे का पालन करें, लेकिन मैं इसकी अनुशंसा नहीं करता क्योंकि यह PHP के नवीनतम संस्करणों में पदावनत पाया गया है।

कोड का उपयोग करने से पहले इसे http://php.net/manual/en/function.password-hash.php पढ़ें।

 <?php $options = [ 'salt' => your_custom_function_for_salt(), //write your own code to generate a suitable & secured salt 'cost' => 12 // the default cost is 10 ]; $hash = password_hash($your_password, PASSWORD_DEFAULT, $options); ?> 

आशा है कि यह सब मदद करता है !!

मैंने एक फ़ंक्शन का निर्माण किया है जो कि मैं पासवर्ड सत्यापन के लिए हर समय उपयोग करता हूं और पासवर्ड बनाने के लिए उन्हें एक MySQL डेटाबेस में संग्रहीत करने के लिए फ़ेस करता हूं। यह एक बेतरतीब ढंग से उत्पन्न नमक का उपयोग करता है जो स्थैतिक नमक के उपयोग से अधिक सुरक्षित होता है।

 function secure_password($user_pwd, $multi) { /* secure_password ( string $user_pwd, boolean/string $multi ) *** Description: This function verifies a password against a (database-) stored password's hash or returns $hash for a given password if $multi is set to either true or false *** Examples: // To check a password against its hash if(secure_password($user_password, $row['user_password'])) { login_function(); } // To create a password-hash $my_password = 'uber_sEcUrE_pass'; $hash = secure_password($my_password, true); echo $hash; */ // Set options for encryption and build unique random hash $crypt_options = ['cost' => 11, 'salt' => mcrypt_create_iv(22, MCRYPT_DEV_URANDOM)]; $hash = password_hash($user_pwd, PASSWORD_BCRYPT, $crypt_options); // If $multi is not boolean check password and return validation state true/false if($multi!==true && $multi!==false) { if (password_verify($user_pwd, $table_pwd = $multi)) { return true; // valid password } else { return false; // invalid password } // If $multi is boolean return $hash } else return $hash; }