HTMLSPECialCHARS () သည် XSS (Cross-site scripting attack) ကိုကာကွယ်ရန် function တစ်ခုဖြစ်သည်။ ၎င်း၏ရည်ရွယ်ချက်မှာစာမျက်နှာများကိုစာမျက်နှာတွင်ကွပ်မျက်ခြင်းမှတင်ပြသောအန္တရာယ်ရှိသော scripts များကိုကာကွယ်ရန် HTML ( < , > , " နှင့် ) ကို HTML အဖွဲ့အစည်းများအဖြစ်ပြောင်းလဲရန်ဖြစ်သည်။ ဥပမာ -
<?php
$user_input = '<script>alert("XSS")</script>';
echo htmlspecialchars($user_input, ENT_QUOTES, 'UTF-8');
?>
output ရလဒ် -
<script>alert("XSS")</script>
ဤကုဒ်သည်အန္တရာယ်ရှိသော JavaScript injection ကို HTML သို့ထိရောက်စွာကာကွယ်နိုင်သည်။ သို့သော်၎င်းသည် CSRF တိုက်ခိုက်မှုကာကွယ်ရေးနှင့်တိုက်ရိုက်ဆက်နွယ်မှုအနည်းငယ်သာရှိသည်။
CSRF သည်အသုံးပြုသူ၏ "logined status" ကိုအသုံးပြုသည်။ တိုက်ခိုက်သူသည်အသုံးပြုသူအား link တစ်ခုပေါ်တွင် နှိပ်. image / iframe သို့ဝင်ရောက်ရန် အသုံးပြု. image / iframe ကိုသုံးရန်အသုံးပြုပြီး 0 ဘ်ဆိုဒ်တစ်ခုတွင်အသုံးပြုသူ၏လက်ရှိ login status ကို အသုံးပြု. တောင်းဆိုမှုကိုပြုလုပ်သည်။ ဥပမာအားဖြင့်:
<img src="https://m66.net/delete_account.php" />
အသုံးပြုသူသည် M66.net တွင်ဝင်ရောက်ပြီးဆာဗာသည်မည်သည့်အတည်ပြုခြင်းမပြုပါကဤတောင်းဆိုမှုသည်အသုံးပြုသူအကောင့်ကိုအမှန်တကယ်ဖျက်ပစ်နိုင်သည်။
ဤတိုက်ခိုက်မှု၏သော့ချက်မှာသုံးစွဲသူသည်ပြည်နယ်ပြောင်းလဲမှုတစ်ခုတောင်းဆိုရန်တောင်းဆိုမှုကိုမဖော်ပြနိုင်သည့်အတွက်ဆာဗာသည်တောင်းဆိုမှုကိုယုံကြည်စိတ်ချစေသည်။
htmlspecialchars () "output stage" နှင့်အဓိကအားဖြင့် browser ကိုအန္တရာယ်ရှိသော scripts မှ browser ကိုကာကွယ်ပေးသည်။ CSRF တိုက်ခိုက်မှုများသည်အလိုအလျောက်သို့မဟုတ်အသုံးပြုသူ၏ browser မှအလိုအလျောက်သို့မဟုတ်သွေးဆောင်ခြင်းများကိုစတင်သည်။ စာမျက်နှာတွင် output မရှိပါကပင်ဖြစ်ပေါ်စေနိုင်သည်။
တနည်းအားဖြင့် CSRF သည် "သုံးစွဲသူ၏မည်သူမည်ဝါဖြစ်ကြောင်းဖုံးကွယ်ရန်တောင်းဆိုခြင်း" ဖြစ်ပြီး output contents မှလွတ်မြောက်ခြင်းရှိမရှိနှင့်ဘာမှမဆိုင်ပါဘူး။ ထို့ကြောင့် htmlspecialchars () CSRF တိုက်ခိုက်မှုများကိုမတားဆီးနိုင်ပါ။
CSRF တိုကင်ကိုအသုံးပြုခြင်း
ထိရောက်သောနည်းလမ်းမှာကျပန်းထုတ်လုပ်ထားသော CSRF အမှတ်အသားကိုပုံစံသို့ထည့်သွင်းရန်နှင့်တောင်းဆိုမှုကိုလုပ်ဆောင်သောအခါအတည်ပြုရန်ဖြစ်သည်။ ဥပမာအားဖြင့်:
<?php
session_start();
if ($_SERVER['REQUEST_METHOD'] === 'GET') {
$_SESSION['csrf_token'] = bin2hex(random_bytes(32));
?>
<form method="POST" action="https://m66.net/update_profile.php">
<input type="hidden" name="csrf_token" value="<?php echo $_SESSION['csrf_token']; ?>" />
<!-- အခြားပုံစံလယ်ကွင်း -->
<button type="submit">နားထောင်</button>
</form>
<?php
} elseif ($_SERVER['REQUEST_METHOD'] === 'POST') {
if (!hash_equals($_SESSION['csrf_token'], $_POST['csrf_token'])) {
die("တရားမဝင်တောင်းဆိုချက်!");
}
// update ကိုစစ်ဆင်ရေးလုပ်ဆောင်ပါ
}
?>
ရည်ညွှန်းသူသို့မဟုတ်မူလခေါင်းစဉ်ကိုစစ်ဆေးပါ
၎င်းကိုအပြည့်အဝမမှီခိုနိုင်သော်လည်း၎င်းသည်အချို့သောအခြေအနေများတွင်တောင်းဆိုမှုသည်တရား 0 င်မှုရှိ, မရှိဆုံးဖြတ်ရန်ကူညီနိုင်သည်။ ဥပမာအားဖြင့်:
<?php
$referer = $_SERVER['HTTP_REFERER'] ?? '';
if (parse_url($referer, PHP_URL_HOST) !== 'm66.net') {
die("တရားမဝင်အရင်းအမြစ်");
}
?>
Samesite cookie attribute ကိုသုံးပါ
samesite = တင်းကျပ်စွာ သို့မဟုတ် samesite = lax ၏ cookie attribute ကို setting အားဖြင့် throughts cookies တွေကိုတောင်းဆိုခြင်းမှတားဆီးခြင်းမှတတိယပါတီများအား cookies များကိုတောင်းဆိုခြင်းမှကာကွယ်ရန်ခေတ်မီ browser များထံမှကာကွယ်ရေး။
setcookie('session_id', $value, [
'samesite' => 'Strict',
'secure' => true,
'httponly' => true
]);