လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> Database encryption password တွင် crypt () သိုလှောင်ခြင်း

Database encryption password တွင် crypt () သိုလှောင်ခြင်း

M66 2025-06-02

Web Development တွင်အသုံးပြုသူစကားဝှက်များကိုလုံခြုံသောသိုလှောင်မှုသည်အလွန်အရေးကြီးသည်။ PHP တွင်စကားဝှက်အကာအကွယ်အတွက်အသုံးပြုနိုင်သည့် PHP တွင်စာဝှက်ခြင်းနည်းလမ်းများစွာရှိသော်လည်း Crypt () function သည်ဂန္ထဝင်နှင့်ထိရောက်သောကိရိယာတစ်ခုဖြစ်သည်။ developer များက developer များက developer များအနေဖြင့်မိုးရွာသွန်းမှုမရှိသော encrypted strings များကိုထုတ်လုပ်ရန် Blowfish ကဲ့သို့သောမတူညီသော algorithms များကိုအသုံးပြုရန်ခွင့်ပြုသည်။ Secure အသုံးပြုသူစကားဝှက်သိုလှောင်မှုရရှိရန် Crypt () function ကိုဒေတာဘေ့စ်နှင့်မည်သို့ပေါင်းစပ်ရမည်ကိုဤဆောင်းပါးကရှင်းပြပါမည်။

1 ။ 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 ကြိမ်အသုံးပြုသည်။

2 ။ ဒေတာဘေ့စ်ကိုဆက်သွယ်ပြီးစာဝှက်ထားတဲ့စကားဝှက်ကိုသိမ်းထားပါ

စာဝှက်ထားတဲ့စကားဝှက်ကိုဒေတာဘေ့စ်ထဲထည့်ရန်အသုံးပြုသူဇယားကိုလိုအပ်သည်။ ဤတွင်ရိုးရှင်းသောအသုံးပြုသူဇယားဖွဲ့စည်းပုံမှာ -

 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
]);
?>

3 ။ အသုံးပြုသူစကားဝှက်ကိုစစ်ဆေးပါ

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 "စကားဝှက်。";
}
?>

4 ။ လုံခြုံရေးဖြည့်စွက်အကြံပြုချက်များ

Crypt () function သည်လုံခြုံသော်လည်း၎င်းကို password_hash () နှင့် password_verify () ဖြင့်အစားထိုးခဲ့သည်။ crypt () သည်စနစ်များအဟောင်းနှင့်အတူနောက်ပြန်လိုက်ဖက်ခြင်းလိုအပ်သည့်အခြေအနေများအတွက်ပိုမိုသင့်တော်သည်။

သို့သော် Crypt () ကို အသုံးပြုသောအခါအာရုံစိုက်ရန်သေချာပါစေ။

  1. အမြဲတမ်းခိုင်ခံ့သောကျပန်းဆားကို သုံး. ပုံသေတန်ဖိုးများကိုမသုံးပါနှင့်။

  2. brute force cracking ကုန်ကျစရိတ်တိုးမြှင့်ဖို့ (ထိုကဲ့သို့သော $ 2Y $ 10 $ 10 $ 10 $ 10 $ ) ကို (ဥပမာ 10 ဒေါ်လာ) ကိုထိန်းချုပ်ပါ။

  3. ကြားဖြတ်မှုတ်သွင်းခြင်းမှကာကွယ်ခြင်းမှကာကွယ်ရန်ရှေ့တန်းနှင့်အဆုံးကိုချိတ်ဆက်ရန် HTTPS ကိုသုံးရန် HTTPS ကိုသုံးပါ။

  4. အထိခိုက်မခံသောအချက်အလက်များကို URLs တွင်မဖြတ်သန်းပါနှင့်။