PHP သည် dynamic and interactive ဝက်ဘ်ဆိုက်များကိုဖန်တီးရန်အတွက်လူကြိုက်အများဆုံး backramming ဘာသာစကားများထဲမှတစ်ခုဖြစ်သည်။ သို့သော် PHP Code သည်လုံခြုံရေးအားနည်းချက်အမျိုးမျိုးကိုထိခိုက်နိုင်သည်။ 0 က်ဘ်အပလီကေးရှင်းများကိုကာကွယ်ရန်လုံခြုံရေးအတွက်အကောင်အထည်ဖော်မှုလုံခြုံရေးအရအကောင်းဆုံးအလေ့အကျင့်များသည်မရှိမဖြစ်လိုအပ်သည်။
input validation သည် SQL Injection နှင့်အခြားအန္တရာယ်ရှိသော input ကိုကာကွယ်ရန်အရေးပါသောခြေလှမ်းဖြစ်သည်။ PHP သည် filter_var () နှင့် PREG_MATCHATHATE () PREG_MATCE () () forment ကိုထည့်သွင်းရန်။
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
output purification သည် site site scripting (XSS) တိုက်ခိုက်မှုများကိုကာကွယ်ပေးသည်, အသုံးပြုသူ input ကိုလုံခြုံစိတ်ချရသောပုံစံသို့ပြောင်းခြင်းကိုကာကွယ်ပေးသည်။ အထူးအက္ခရာများကိုထိထိရောက်ရောက်မှလွတ်မြောက်ရန် htmlspecialchars () ကိုသုံးပါ။
echo htmlspecialchars($comment);
အစည်းအဝေးများသည်အသုံးပြုသူအချက်အလက်များကိုလုံခြုံစွာသိမ်းဆည်းရန်နည်းလမ်းတစ်ခုဖြစ်သည်။ PHP သည် session_start () ကို အသုံးပြု. session တစ်ခုကိုစတင်ပြီးဒေတာများကို $ _Session Array မှတဆင့်စီမံခန့်ခွဲသည်။
session_start();
$_SESSION['userID'] = 123;
Cross-site တောင်းဆိုခြင်းအတု (CSRF) တိုက်ခိုက်မှုများသည်အသုံးပြုသူ၏ဗဟုသုတမရှိဘဲအန္တရာယ်ရှိသောလုပ်ရပ်များပြုလုပ်နိုင်သည်။ CSRF ကိုကျပန်းတိုကင်ထုတ်လုပ်ခြင်းဖြင့်တားဆီးနိုင်သည်။
$csrfToken = bin2hex(openssl_random_pseudo_bytes(16));
$_SESSION['csrfToken'] = $csrfToken;
ဒေတာဘေ့စ်ဆက်သွယ်မှုများသည် SQL Injection Attacks သို့ရောက်ရှိနိုင်သည်။ ဒေတာဘေ့စ်လုပ်ငန်းများကိုလုံခြုံစွာကိုင်တွယ်ရန် PDO ကိုသုံးပါ။
$dsn = 'mysql:host=localhost;dbname=mydatabase';
$username = 'root';
$password = 'secret';
$db = new PDO($dsn, $username, $password);
စကားဝှက်များနှင့်အထိခိုက်မခံသောအချက်အလက်များသည်ခိုင်မာသော encryption algorithms (bcrypt သို့မဟုတ် argon2) ကိုအသုံးပြုသင့်သည်။ phpp password_hash () နှင့် password_verify ()) ကိုစာဝှက်ခြင်းနှင့်အတည်ပြုခြင်းအတွက်လုပ်ဆောင်ချက်များကိုပေးသည်။
$hashedPassword = password_hash('myPassword', PASSWORD_BCRYPT);
PHP နှင့် Third-party libraries သို့ပုံမှန်မွမ်းမံမှုများသည်လုံခြုံရေးအားနည်းချက်များနှင့် 0 က်ဘ်ဆိုက်လုံခြုံရေးကိုသေချာစေနိုင်သည်။
လုံခြုံသော 0 က်ဘ်ဆိုက်ဆာဗာတစ်ခု (Nginx သို့မဟုတ် Apache ကဲ့သို့သော) ကိုရွေးချယ်ခြင်းနှင့်၎င်းကို configure လုပ်ခြင်းကိုမှန်ကန်စွာပြင်ဆင်ခြင်းသည်ဘုံတိုက်ခိုက်မှုများကိုကာကွယ်ရန်လုံခြုံရေးကာကွယ်မှုအလွှာတစ်ခုထည့်နိုင်သည်။
အောက်ပါဥပမာသည် login form ကိုလုံခြုံစေရန်အကောင်းဆုံးသောလုပ်ထုံးလုပ်နည်းများကိုမည်သို့ပေါင်းစပ်ရမည်ကိုပြသသည်။
<?php
session_start();
// အတည်ပြုရိုက်ထည့်ပါ
$username = filter_var($_POST['username'], FILTER_SANITIZE_STRING);
$password = filter_var($_POST['password'], FILTER_SANITIZE_STRING);
// output ကိုသန့်ရှင်းရေး
$username = htmlspecialchars($username);
$password = htmlspecialchars($password);
// တားဆီး CSRF တိုက်ခိုက်ခြင်း
$csrfToken = $_POST['csrfToken'];
if (!isset($csrfToken) || $csrfToken !== $_SESSION['csrfToken']) {
die('အားမရှိသော CSRF လက်ခဏာသက်သေ!');
}
unset($_SESSION['csrfToken']);
// ဒေတာဘေ့စ်ဆက်သွယ်မှုများနှင့်မေးမြန်းချက်များ
$dsn = 'mysql:host=localhost;dbname=mydatabase';
$username = 'root';
$password = 'secret';
$db = new PDO($dsn, $username, $password);
$stmt = $db->prepare('SELECT * FROM users WHERE username = ?');
$stmt->execute([$username]);
// authentication နှင့် session ကိုစီမံခန့်ခွဲမှု
$user = $stmt->fetch(PDO::FETCH_ASSOC);
if ($user && password_verify($password, $user['password'])) {
$_SESSION['userID'] = $user['id'];
$_SESSION['username'] = $user['username'];
header('Location: dashboard.php');
} else {
echo 'လော့ဂ်အင်မအောင်မြင်ပါ!';
}
?>
အထက်ပါနည်းလမ်းများမှတဆင့် PHP application များ၏လုံခြုံရေးကိုထိရောက်စွာတိုးတက်ကောင်းမွန်အောင်ပြုလုပ်နိုင်ပြီးဝက်ဘ်ဆိုက်ကိုဘုံတိုက်ခိုက်မှုခြိမ်းခြောက်မှုများမှကာကွယ်နိုင်သည်။