လက်ရှိတည်နေရာ: ပင်မစာမျက်နှာ> နောက်ဆုံးရဆောင်းပါးများစာရင်း> XSS နှင့် CSRF တိုက်ခိုက်မှုများကိုထိရောက်စွာကာကွယ်ရန် Init function မှတဆင့်မည်သို့လုံခြုံစွာတည်ဆောက်နိုင်မည်နည်း။

XSS နှင့် CSRF တိုက်ခိုက်မှုများကိုထိရောက်စွာကာကွယ်ရန် Init function မှတဆင့်မည်သို့လုံခြုံစွာတည်ဆောက်နိုင်မည်နည်း။

gitbox 2025-05-28

Web Development တွင်လုံခြုံရေးသည် developer များအတွက်အမြဲတမ်းအဓိကပြ issue နာဖြစ်သည်။ တိုက်ခိုက်မှုနည်းလမ်းများအားစဉ်ဆက်မပြတ်ဆုံခြင်းနှင့်အတူ XSS (site Cross-site scripting attack) နှင့် CSRF (Cross-site ကိုတောင်းဆိုခြင်း) သည်အများဆုံးအသုံးများသောတိုက်ခိုက်မှုနှစ်ခုဖြစ်လာသည်။ ထို့ကြောင့်ကျိုးကြောင်းဆီလျော်သောလုံခြုံရေးပြင်ဆင်မှုသည်ထိုကဲ့သို့သောတိုက်ခိုက်မှုများကိုကာကွယ်ရန်သော့ချက်ဖြစ်သည်။ ကျယ်ကျယ်ပြန့်ပြန့်အသုံးပြုသောပရိုဂရမ်ဘာသာစကားတစ်ခုအနေဖြင့် PHP သည်လုံခြုံရေးတည်ဆောက်ရန်ကြွယ်ဝသောနည်းလမ်းတစ်ခုဖြစ်သည်။ ဤဆောင်းပါးသည် XSS နှင့် CSRF တိုက်ခိုက်မှုများကို Init function ကိုလုံခြုံရေးပြင်ဆင်မှုမှတစ်ဆင့်မည်သို့ထိရောက်စွာတားဆီးနိုင်ကြောင်းကိုလေ့လာပါမည်။

XSS နှင့် CSRF တိုက်ခိုက်မှုများသည်အဘယ်နည်း။

XSS Attack (Cross-site scripting တိုက်ခိုက်မှု)

XSS သည်အသုံးပြုသူများကိုဤအန္တရာယ်ရှိသောကုဒ်များကိုခွဲခြားရန်အသုံးပြုသူများကိုအသုံးပြုသူများကိုခွဲခြားရန်ဝက်ဘ်စာမျက်နှာတစ်ခုထဲသို့ 0 က်ဘ်စာမျက်နှာတစ်ခုထဲသို့ထည့်သွင်းထားသော JavaScript ကုဒ်ကိုဝက်ဘ်စာမျက်နှာတစ်ခုထဲသို့ထည့်သွင်းရန် XSS ကိုရည်ညွှန်းသည်။ XSS Attacks သည်ခွင့်ပြုချက်မရှိသောသုံးစွဲသူများဘရောက်ဇာများရှိအန္တရာယ်ရှိသော script များကိုအန္တရာယ်ရှိသော script များကိုလုပ်ဆောင်နိုင်ပြီးသတင်းအချက်အလက်ယိုစိမ့်မှုနှင့်အလွဲသုံးစားမှုဖြစ်စေနိုင်သည်။

CSRF တိုက်ခိုက်မှု (Cross-site ကိုတောင်းဆိုခြင်း)

CSRF တိုက်ခိုက်မှုများသည် 0 က်ဘ်ဆိုက်များကို 0 င်ရောက်ရန် 0 င်ရောက်သော 0 က်ဘ်ဆိုက်များကိုရယူရန် logged in 0 င်သောအသုံးပြုသူများကိုဖြစ်ပေါ်စေသည့်အခါအသုံးပြုသူများသည် 0 က်ဘ်ဆိုက်များကိုရယူရန်အဆိုအရခွင့်ပြုချက်မရှိဘဲတောင်းဆိုမှုများကိုစတင်ခဲ့သည်။ ဤနည်းအားဖြင့်တိုက်ခိုက်သူသည်သားကောင်၏ဝိသေသလက်ခဏာကို သုံး. အမျိုးမျိုးသောစစ်ဆင်ရေးများ (ဥပမာစကားဝှက်များ, ငွေလွှဲပြောင်းခြင်းစသည်တို့စသည်တို့) လုပ်ဆောင်ရန်ဖြစ်သည်။

Init function ကိုမှတဆင့်လုံခြုံချိန်ညှိချက်များ

PHP တွင် XSS နှင့် CSRF တိုက်ခိုက်မှုများကို Global Security Settings in init function တွင်ထိရောက်စွာတားဆီးနိုင်သည်။ Init function ကိုများသောအားဖြင့် application ကိုစတင်ခြင်းအတွင်းကွပ်မျက်ခံရလေ့ရှိပြီး application configuration ကိုတည်ဆောက်ရန်နှင့်ကမ္ဘာလုံးဆိုင်ရာလုံခြုံရေးအစီအမံများကိုကိုင်တွယ်ရန်အကောင်းဆုံးနေရာတစ်ခုဖြစ်သည်။

XSS တိုက်ခိုက်မှုတားဆီး

  1. output encoding:

    အသုံးပြုသူထံမှမည်သည့်အချက်အလက်ထည့်သွင်းမှုမဆိုစာမျက်နှာသို့ output ကို html တွင် encoded သင့်သည်။ ၎င်းသည်အသုံးပြုသူမှမကောင်းသော JavaScript code ကို browser မှကွပ်မျက်ခြင်းမှကာကွယ်ပေးသည်။

     function init() {
        // default output encoding ကိုသတ်မှတ်ပါ,တားဆီး XSS တိုက်ခိုက်ခြင်း
        ini_set('html_errors', 0);
    }
    
    // အသုံးပြုသူဒေတာ outputting အခါလုပ်ဆောင်ပါ HTML entity encoding
    function safeOutput($data) {
        return htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
    }
    
    // နမူနာ:အသုံးပြုသူမှ output ကိုထည့်သွင်းမှု
    echo safeOutput($_GET['user_input']);
    

    အထက်ပါကုဒ်များတွင် HTMLSPECALCHARCHARS function သည် HTML အဖွဲ့အစည်းများမှ HTML အဖွဲ့အစည်းများသို့ (ဥပမာ < , > နှင့် စသဖြင့်) သည်အထူးအက္ခရာများမှလွတ်မြောက်ရန်,

  2. Inline Javascript ကိုပိတ်ပါ။

    အချို့သော browser များက Inline JavaScript Code ကိုကွပ်မျက်ခံရနိုင်သည်။ ထို့ကြောင့်ကာကွယ်မှုပိုမိုခိုင်မာစေရန်အတွက် Inline script များကိုကွပ်မျက်ခြင်းကို HTTP ခေါင်းစီးများမှတဆင့်ကာကွယ်နိုင်သည်။

     function init() {
        // တည်ဆောက်သည် Content Security Policy(CSP)header သတင်းအချက်အလက်,scripts ၏အရင်းအမြစ်ကိုကန့်သတ်
        header("Content-Security-Policy: script-src 'self' https://gitbox.net;");
    }
    

    အထက်ပါကုဒ်တွင် အကြောင်းအရာကိုလုံခြုံရေးမူဝါဒ header information ကိုသတ်မှတ်ခြင်းဖြင့် script ၏အရင်းအမြစ်ကိုကန့်သတ်ထားပြီးပြင်ပအန္တရာယ်ရှိသော scripts များတင်ခြင်းကိုရှောင်ရှားရန်လက်ရှိဒိုမိန်းအမည်နှင့် GitABox.net မှ Javascript script များကိုသာခွင့်ပြုသည်။

CSRF တိုက်ခိုက်မှုတားဆီး

  1. CSRF အမှတ်အသားကိုဖန်တီးပြီးစစ်ဆေးပါ။

    CSRF တိုက်ခိုက်မှု၏သော့ချက်မှာတောင်းဆိုမှုများကိုဖော်ထုတ်ရန်ဖြစ်သည်။ CSRF တိုကင်ကိုအသုံးပြုခြင်းအားဖြင့်တိုက်ခိုက်သူများသည်ခွင့်ပြုသူများအားတောင်းဆိုမှုများကိုတောင်းဆိုခြင်းမှထိရောက်စွာတားဆီးနိုင်သည်။ အသုံးပြုသူတစ် ဦး သည်စာမျက်နှာတစ်ခုသို့လာတိုင်းဆာဗာသည်ထူးခြားသော CSRF တိုကင်နှင့်ပုံစံထဲသို့ထည့်သွင်းသည်။ ပုံစံကိုတင်ပြသောအခါဆာဗာသည် Token သည် Token နှင့်လိုက်ဖက်သည်ကိုအသုံးပြုသူ session ထဲမှချိတ်ဆက်မှုနှင့်ကိုက်ညီမှုရှိမရှိစစ်ဆေးသည်။

     function generateCSRFToken() {
        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }
        if (empty($_SESSION['csrf_token'])) {
            $_SESSION['csrf_token'] = bin2hex(random_bytes(32));
        }
        return $_SESSION['csrf_token'];
    }
    
    function verifyCSRFToken($token) {
        if (session_status() == PHP_SESSION_NONE) {
            session_start();
        }
        if (empty($_SESSION['csrf_token']) || $token !== $_SESSION['csrf_token']) {
            die('CSRF token validation failed');
        }
    }
    

    ပုံစံတွင် CSRF အမှတ်အသားကိုထုတ်လုပ်ပြီး၎င်းကိုလျှို့ဝှက်နယ်ပယ်တစ်ခုအဖြစ်တင်ပြပါ။

     // ဖြစ်ပါှးစေ Token
    $csrfToken = generateCSRFToken();
    ?>
    
    <form method="POST" action="https://gitbox.net/submit_form.php">
        <input type="hidden" name="csrf_token" value="<?php echo $csrfToken; ?>">
        <!-- အခြားပုံစံလယ်ကွင်း -->
        <input type="submit" value="Submit">
    </form>
    

    ပုံစံကိုတင်သွင်းသောအခါတောင်းဆိုမှုတွင် CSRF_TORED သည်တောင်းဆိုမှုတွင် csrf_token နှင့်ကိုက်ညီမှုရှိမရှိကိုစစ်ဆေးသည်။

  2. Defer header ကိုစစ်ဆေးပါ။

    CSRF တိုက်ခိုက်မှုများသည်များသောအားဖြင့် 0 င်ရောက်သည့်အချိန်တွင် 0 က်ဘ ဆိုက်တောင်းဆိုမှုများကိုပြုလုပ်ရန်အသုံးပြုသူများကိုအားလွဲမှားစွာမှီခိုသည်

     function checkReferer() {
        $referer = $_SERVER['HTTP_REFERER'] ?? '';
        if (empty($referer) || strpos($referer, 'gitbox.net') === false) {
            die('Invalid referer');
        }
    }
    

အကျဉ်းချုပ်

သင့်လျော်သောလုံခြုံရေး configuration ကို init function တွင် XSS နှင့် CSRF တိုက်ခိုက်မှုများကိုထိရောက်စွာကာကွယ်နိုင်သည်။ CSRF တိုကင်များထုတ်လုပ်ခြင်းနှင့် CSRF တိုကင်များကိုထုတ်လုပ်ခြင်းနှင့်စစ်ဆေးသူထိပ်တန်းအစီအမံများကိုစစ်ဆေးခြင်းသည်ဤတိုက်ခိုက်မှုများကိုကာကွယ်ရန်ထိရောက်သောနည်းလမ်းများဖြစ်သည်။ ဤဆောင်းပါးတွင်ဖော်ပြထားသောဥပမာများနှင့်အကောင်းဆုံးအလေ့အကျင့်များသည်အသုံးပြုသူများအားအလားအလာရှိသောလုံခြုံရေးခြိမ်းခြောက်မှုများမှကာကွယ်ရန်ပိုမိုလုံခြုံသော PHP application များတည်ဆောက်ရန်မျှော်လင့်ပါသည်။