နှစ်ပေါင်းများစွာသို့မဟုတ်ဆယ်စုနှစ်တစ်ခုကျော်အတွင်းအသုံးပြုသော PHP စီမံကိန်းများစွာတွင်သုံးစွဲသူစကားဝှက်များကို crypt () function ကို အသုံးပြု. စာဝှက်ထားလေ့ရှိသည်။ အတိတ်ကာလကဤချဉ်းကပ်နည်းသည်များသောအားဖြင့်အလွန်များသောအားဖြင့်ယနေ့လုံခြုံရေးစံချိန်စံညွှန်းများအောက်တွင် password_hash () နှင့် passwordy_verify ()) ကဲ့သို့သောပိုမိုအားကောင်းသည့် algorithms ဖြင့်အစားထိုးခဲ့သည်။ သို့သော် System Migration သို့မဟုတ်အဆင့်မြှင့်တင်ခြင်းတွင်ကျွန်ုပ်တို့သည်အချက်အလက်အဟောင်းနှင့်သဟဇာတဖြစ်ရန်လိုအပ်နေဆဲပင်။
ဤဆောင်းပါးသည်စကားဝှက်အဟောင်းကို crypt () စနစ်အသစ်သို့စာဝှက်ထားသည့်အဟောင်းကိုမည်သို့ချောချောမွေ့မွေ့စေပြီးစနစ်သစ်ကိုစကားဝှက်အဟောင်းနှင့်သဟဇာတဖြစ်အောင်ပြုလုပ်ပေးပါမည်။ အသုံးပြုသူမှတ်တမ်းများအပြီးပိုမိုလုံခြုံစိတ်ချရသောစာဝှက်စနစ်ကိုတဖြည်းဖြည်းချင်းကူးပြောင်းနိုင်သည်။
PHP ၏ Crypt () function သည်မတူညီသောစာဝှက်စနစ်, MD5, Sha-256, Sha-512 ကဲ့သို့သောမတူညီသော encryption algorithms ကိုသုံးနိုင်သည်။
Des encryption (ဇာတ်ကောင်နှစ် ဦး ဆား)
MD5 encryption ( $ 1 $ ဖြင့်ဆားစတင်ခြင်း)
Sha-256 encryption ( ဒေါ်လာ 5 ဒေါ်လာ ဖြင့်ဆားစတင်ခြင်း)
Sha-512 encryption ( ဒေါ်လာ 6 ဒေါ်လာ ဖြင့်ဆားစတင်ခြင်း)
ဥပမာအားဖြင့်:
$hashed = crypt('mypassword', '$1$somesalt$'); // အသုံးပြု MD5 စာဝှက်ပယ်
အတည်ပြုသည့်အခါသင် Plaintext password နှင့်ပြီးပြည့်စုံသော hash ကို crypt () သို့သွားရန်သာလိုအပ်သည်။
if (crypt($inputPassword, $storedHash) === $storedHash) {
// စကားဝှက်ကိုက်ညီမှု
}
ရည်မှန်းချက်မှာစာ ဝှက် စနစ်စကားဝှက်နှင့်ခေတ်မီ စကားဝှက် စကားဝှက်ကိုထောက်ပံ့ရန်စနစ်သစ်ကိုအထောက်အကူပြုရန်စနစ်အသစ်ကိုဖွင့်ရန်ဖြစ်ပြီးအသုံးပြုသူမှတ်တမ်းတင်သည့်အခါအဆင့်မြှင့်တင်မှုများပြုလုပ်ရန်ဖြစ်သည်။
စနစ်ဟောင်း၏စကားဝှက်ကို စကားဝှက်ကိုစကားဝှက် ကိုအမည်ပေးပြီး crypt () ၏ရလဒ်ကိုသိုလှောင်ထားနိုင်သည်။ စနစ်အသစ်သည်ဤနယ်ပယ်ကိုဆက်လက်အသုံးပြုနိုင်သည်, သို့မဟုတ်၎င်းသည် စကားဝှက် သည် encryption method method သည်ဟောင်းနွမ်းနေသလားဟုမှတ်သားနိုင်သည်။
အသုံးပြုသူမှတ်တမ်းများ 0 င်ရောက်လာသောအခါစနစ်သည်သိုလှောင်ထားသောစကားဝှက်ပုံစံကိုဆုံးဖြတ်ရန်နှင့်သက်ဆိုင်ရာစိစစ်အတည်ပြုနည်းလမ်းကိုအသုံးပြုပါ။
function verifyPassword($inputPassword, $storedHash) {
if (password_get_info($storedHash)['algo'] !== 0) {
// ဟုတ်ကဲ့ password_hash() ပမာဏ
return password_verify($inputPassword, $storedHash);
} else {
// ဟုတ်ကဲ့ crypt() ပမာဏ
return crypt($inputPassword, $storedHash) === $storedHash;
}
}
စကားဝှက်အဟောင်းကိုအောင်မြင်စွာဝင်ရောက်ပြီးသည်နှင့်စကားဝှက်ကို password_hash () နှင့်ချက်ချင်းပြန်လည်နေရာချထားသင့်ပြီးဒေတာဘေ့စ်ကို update လုပ်သင့်သည်။
function upgradePassword($userId, $inputPassword) {
$newHash = password_hash($inputPassword, PASSWORD_DEFAULT);
// 假设အသုံးပြု PDO ဒေတာဘေ့စ်ကိုဆက်သွယ်ပါ
$stmt = $pdo->prepare("UPDATE users SET password = :password WHERE id = :id");
$stmt->execute(['password' => $newHash, 'id' => $userId]);
}
အောင်မြင်သောစိစစ်အတည်ပြုပြီးနောက် sheamless အဆင့်မြှင့်တင်ရန်ဤ function ကိုခေါ်ပါ။
crypt () ကိုယ်နှိုက်သည်လုံခြုံမှုမရှိပါက HTTPS နှင့်အခြားနည်းလမ်းများမှတဆင့်အန္တရာယ်များကိုလျှော့ချနိုင်ဆဲဖြစ်သည်။ စနစ်၌, login interface ကို TLS / SSL ကို အသုံးပြု. စာဝှက်ထားကြောင်းသေချာစေရန်သေချာပါစေ။
ဥပမာအားဖြင့်အောက်ပါ login interface (Pseudocode) ကိုသုံးပါ။
$url = 'https://m66.net/api/login';
ဒေတာထုတ်လွှင့်မှုကာလအတွင်းလျှို့ဝှက်ခြင်းနှင့်သမာဓိရှိစေရန်ဤ interface ကိုလုံခြုံသောဆာဗာပတ်ဝန်းကျင်တွင်နေရာချထားသင့်သည်။
အောက်ဖော်ပြပါသည် login processing logic ဖြစ်သည်။
function handleLogin($username, $inputPassword) {
global $pdo;
$stmt = $pdo->prepare("SELECT id, password FROM users WHERE username = :username");
$stmt->execute(['username' => $username]);
$user = $stmt->fetch();
if (!$user) {
return false;
}
$storedHash = $user['password'];
if (verifyPassword($inputPassword, $storedHash)) {
// 如果ဟုတ်ကဲ့旧ပမာဏ密码,အဆင့်မြှင့်မှဆက်လက်ဆောင်ရွက်
if (password_get_info($storedHash)['algo'] === 0) {
upgradePassword($user['id'], $inputPassword);
}
return true;
}
return false;
}
၎င်းသည်အသုံးပြုသူအတွေ့အကြုံကိုအာမခံရုံသာမကလုံခြုံရေးကိုအာမခံရုံသာမကလုံခြုံရေးကိုမစွန့်လွှတ်နိုင်သည့်စနစ်ရွှေ့ပြောင်းနေထိုင်ခြင်းတွင်စကားဝှက်အဟောင်းကိုစစ်ဆေးရန်အတွက်လက်တွေ့ကျသောနည်းလမ်းဖြစ်သည်။ အထက်ပါနည်းလမ်းဖြင့်ကျွန်ုပ်တို့သည် crypt () encryption method အတွက်သဟဇာတဖြစ်သောပံ့ပိုးမှုရရှိခြင်းနှင့်အလုံးစုံစနစ်၏လုံခြုံရေးကိုတိုးတက်စေရန်အတွက်တဖြည်းဖြည်းချင်းခေတ်မီစာဝှက်စနစ်များကိုတဖြည်းဖြည်းချင်းကူးပြောင်းနိုင်သည်။ လုံခြုံရေးသည် encryption algorithms အတွက် option တစ်ခုမျှသာမဟုတ်ကြောင်းအမြဲတမ်းသတိရပါ, သို့သော်ဒေတာထုတ်လွှင့်ခြင်း,