Web Development တွင်အသုံးပြုသူစကားဝှက်များကိုလုံခြုံသောသိုလှောင်မှုသည်အလွန်အရေးကြီးသည်။ PHP တွင်စကားဝှက်အကာအကွယ်အတွက်အသုံးပြုနိုင်သည့် PHP တွင်စာဝှက်ခြင်းနည်းလမ်းများစွာရှိသော်လည်း Crypt () function သည်ဂန္ထဝင်နှင့်ထိရောက်သောကိရိယာတစ်ခုဖြစ်သည်။ developer များက developer များက developer များအနေဖြင့်မိုးရွာသွန်းမှုမရှိသော encrypted strings များကိုထုတ်လုပ်ရန် Blowfish ကဲ့သို့သောမတူညီသော algorithms များကိုအသုံးပြုရန်ခွင့်ပြုသည်။ Secure အသုံးပြုသူစကားဝှက်သိုလှောင်မှုရရှိရန် Crypt () function ကိုဒေတာဘေ့စ်နှင့်မည်သို့ပေါင်းစပ်ရမည်ကိုဤဆောင်းပါးကရှင်းပြပါမည်။
PHP's Crypt () function ကိုတစ်လမ်းသွားစာဝှက်ခြင်းအတွက်အသုံးပြုသည်။
string crypt ( string $string , string $salt )
$ string ကို encrypt လုပ်ထားရန်မူရင်း string ကို (များသောအားဖြင့်စကားဝှက်တစ်ခု)
$ ဆား သည်စာဝှက်ခြင်းရလဒ်ကိုသက်ရောက်စေသော string တစ်ခုဖြစ်သည်။ မတူညီသောဆားများသည်မတူညီသော encryption ရလဒ်များကိုထုတ်လုပ်လိမ့်မည်။
Blowfish algorithm ကို အသုံးပြု. စာဝှက်ရန်သင်သည်ဆားကိုပုံစံပြုလုပ်ရန်လိုအပ်သည်။
$salt = '$2y$10$' . bin2hex(random_bytes(11));
$hashed_password = crypt('user_password', $salt);
$ 2Y $ 10 $ 10 $ သည် blowfish algorithm နှင့် encryption ကို 10 ကြိမ်အသုံးပြုသည်။
စာဝှက်ထားတဲ့စကားဝှက်ကိုဒေတာဘေ့စ်ထဲထည့်ရန်အသုံးပြုသူဇယားကိုလိုအပ်သည်။ ဤတွင်ရိုးရှင်းသောအသုံးပြုသူဇယားဖွဲ့စည်းပုံမှာ -
CREATE TABLE users (
id INT AUTO_INCREMENT PRIMARY KEY,
username VARCHAR(50) NOT NULL UNIQUE,
password VARCHAR(255) NOT NULL
);
ထို့နောက်ဒေတာဗေ့စ်နှင့်ချိတ်ဆက်ရန် PHP ကို အသုံးပြု. အသုံးပြုသူအချက်အလက်များကိုထည့်ပါ။
<?php
$pdo = new PDO("mysql:host=localhost;dbname=testdb;charset=utf8", "dbuser", "dbpass");
$username = 'testuser';
$password = 'mypassword';
// ဖြစ်ပါှးစေsaltနှင့်စကားဝှက်ကို encrypt
$salt = '$2y$10$' . bin2hex(random_bytes(11));
$hashed_password = crypt($password, $salt);
// ဒေတာဘေ့စ်ထဲသို့ထည့်ပါ
$stmt = $pdo->prepare("INSERT INTO users (username, password) VALUES (:username, :password)");
$stmt->execute([
':username' => $username,
':password' => $hashed_password
]);
?>
log in လုပ်သည့်အခါလွင်ပြင်စာသားလျှို့ဝှက်နံပါတ်ကိုသင်နှိုင်းယှဉ်။ မရပါ။ ကျွန်ုပ်တို့သည် Crypt () function ကိုသုံးရန်လိုသည်။ အသုံးပြုသူဇယားတွင်ဆားအဖြစ်သိုလှောင်ထားသည့်စာဝှက်ထားသည့်စကားဝှက်ဖြင့်ထပ်မံလုပ်ဆောင်ရန်လိုအပ်သည်။
<?php
$input_password = 'mypassword';
$username = 'testuser';
$stmt = $pdo->prepare("SELECT password FROM users WHERE username = :username");
$stmt->execute([':username' => $username]);
$stored_hash = $stmt->fetchColumn();
if (crypt($input_password, $stored_hash) === $stored_hash) {
echo "စကားဝှက်ကိုစစ်ဆေးခြင်းအောင်မြင်ခဲ့သည်。";
} else {
echo "စကားဝှက်。";
}
?>
Crypt () function သည်လုံခြုံသော်လည်း၎င်းကို password_hash () နှင့် password_verify () ဖြင့်အစားထိုးခဲ့သည်။ crypt () သည်စနစ်များအဟောင်းနှင့်အတူနောက်ပြန်လိုက်ဖက်ခြင်းလိုအပ်သည့်အခြေအနေများအတွက်ပိုမိုသင့်တော်သည်။
သို့သော် Crypt () ကို အသုံးပြုသောအခါအာရုံစိုက်ရန်သေချာပါစေ။
အမြဲတမ်းခိုင်ခံ့သောကျပန်းဆားကို သုံး. ပုံသေတန်ဖိုးများကိုမသုံးပါနှင့်။
brute force cracking ကုန်ကျစရိတ်တိုးမြှင့်ဖို့ (ထိုကဲ့သို့သော $ 2Y $ 10 $ 10 $ 10 $ 10 $ ) ကို (ဥပမာ 10 ဒေါ်လာ) ကိုထိန်းချုပ်ပါ။
ကြားဖြတ်မှုတ်သွင်းခြင်းမှကာကွယ်ခြင်းမှကာကွယ်ရန်ရှေ့တန်းနှင့်အဆုံးကိုချိတ်ဆက်ရန် HTTPS ကိုသုံးရန် HTTPS ကိုသုံးပါ။
အထိခိုက်မခံသောအချက်အလက်များကို URLs တွင်မဖြတ်သန်းပါနှင့်။