আপনার পাসওয়ার্ড স্টোরেজ স্কিমটি সুরক্ষিত করার সবচেয়ে সহজ উপায় হ'ল স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার করে ।
কারণ বেশিরভাগ প্রোগ্রামার একা মোকাবেলা করার চেয়ে সুরক্ষা অনেক জটিল এবং আরও অদৃশ্য স্ক্রু আপ সম্ভাবনার সাথে থাকে, একটি স্ট্যান্ডার্ড লাইব্রেরি ব্যবহার প্রায় সর্বদা সহজ এবং সবচেয়ে সুরক্ষিত (যদি একমাত্র না হয়) উপলব্ধ বিকল্প হয়।
নতুন পিএইচপি পাসওয়ার্ড এপিআই (5.5.0+)
আপনি যদি পিএইচপি সংস্করণ 5.5.0 বা আরও নতুন ব্যবহার করে থাকেন তবে আপনি নতুন সরলীকৃত পাসওয়ার্ড হ্যাশিং এপিআই ব্যবহার করতে পারেন
পিএইচপি এর পাসওয়ার্ড এপিআই ব্যবহার করে কোডের উদাহরণ:
<?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';
}
ওল্ড স্ট্যান্ডার্ড লাইব্রেরি
দয়া করে নোট করুন: আপনার আর এটির প্রয়োজন হবে না! এটি কেবল এখানে historicalতিহাসিক উদ্দেশ্যে রয়েছে।
এক নজরে দেখুন: পোর্টেবল পিএইচপি পাসওয়ার্ড হ্যাশিং ফ্রেমওয়ার্ক : phpass এবং নিশ্চিত করুন যে আপনি 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';
}
পিএইচপাস বেশ কয়েকটি সুপরিচিত প্রকল্পে প্রয়োগ করা হয়েছে:
- phpBB3 তে
- ওয়ার্ডপ্রেস 2.5+ পাশাপাশি বিবিপ্রেস
- ড্রুপাল 7 রিলিজ, (দ্রুপাল 5 এবং 6 এর জন্য উপলব্ধ মডিউল)
- অন্যান্য
ভাল কথাটি হ'ল আপনাকে বিশদ সম্পর্কে উদ্বিগ্ন হওয়ার দরকার নেই, এই বিবরণগুলি অভিজ্ঞ ব্যক্তিরা দ্বারা প্রোগ্রাম করেছেন এবং ইন্টারনেটে অনেক লোকেরা পর্যালোচনা করেছেন।
পাসওয়ার্ড স্টোরেজ স্কিম সম্পর্কিত আরও তথ্যের জন্য, জেফের ব্লগ পোস্টটি পড়ুন: আপনি সম্ভবত পাসওয়ার্ড ভুলভাবে সংরক্ষণ করছেন
আপনি ' আমি নিজে এটি করব, ধন্যবাদ ' পদ্ধতির জন্য যান তবে আপনি যা করেন না, ব্যবহার করবেন না MD5
বা SHA1
আর ব্যবহার করবেন না । এগুলি দুর্দান্ত হ্যাশিং অ্যালগরিদম, তবে সুরক্ষার প্রয়োজনে ভাঙ্গা বিবেচিত ।
বর্তমানে, CRYPT_BLOWFISH সহ ক্রিপ্ট ব্যবহার করা সেরা অনুশীলন।
পিএইচপি-তে CRYPT_BLOWFISH হ'ল Bcrypt হ্যাশ একটি বাস্তবায়ন। Bcrypt ব্লোফিশ ব্লক সাইফারের উপর ভিত্তি করে তৈরি করা হয়েছে, এটি অ্যালগরিদমকে কমিয়ে দেওয়ার জন্য ব্যয়বহুল কী সেটআপ ব্যবহার করে।