csrf
csrf

 

     การโจมตีแบบ (CSRF) หรือ Cross-site Request Forgery  จะใช้ “ตัวตน (Identity)” และ “สิทธิ์ (Privilege)” ของเหยื่อที่มีบนเว็บไซต์ ในการปลอมตัวเป็นเหยื่อ Hacker จะใช้ประโยชน์จาก Cookies ที่เก็บไว้บน Webbrowser (เว็บเบราว์เซอร์) ที่ส่ง Cookie ไปเก็บข้อมูลเพื่อใช้ในการการพิสูจน์ตัวตน Website (เว็บไซต์) ผู้ให้บริการควรเปลี่ยนจากการใช้ Cookie ที่ทำ  Session-tracking มาเป็น Session Token ที่ถูกสร้างขึ้นแบบไดนามิก ทำให้ Hacker ทำการ Hack ได้ยากมากขึ้น

     โดยบทความนี้จะกล่าวถึงวิธีสร้าง Form ป้องกันการโจมตีแบบ CSRF ใน php อย่างง่าย

 

วิธีสร้าง Form ป้องกันการโจมตีแบบ CSRF ใน php

 

หน้า index.php

<html>
   <head>
       <title>วิธีสร้าง Form ป้องกันการโจมตีแบบ CSRF ใน php</title>
   </head>
   <body>
       <form action="sign.php" method="post" name="frm_data">
    <table width="500">
   <caption><h3>วิธีสร้าง Form ป้องกันการโจมตีแบบ CSRF ใน php</h3></caption>
   <tr>
    <td>Input :</td>
    <td>
    <input type="text" class="form-control" name="name"  id="name" value=""/>
    </td>
    <input type = "hidden" name ="<?php echo md5(session_id()); ?>" value="1">
   </tr>
   <tr>
    </td><td><td><input name="but_submit" type="submit" value="Submit" /></td>
   </tr>
   </form>
</body>
</html>

 

หน้า sign.php

<?php
$token = md5(session_id());

 if (isset($_POST["name"])) {
   	$name = $_POST["name"];
        if(!isset($_POST[$token])){
            echo "โทเค็นการรักษาความปลอดภัยไม่ตรงกัน การร้องขอถูกยกเลิกเพื่อป้องกันการละเมิดความปลอดภัย โปรดลองอีกครั้ง";
            exit;  
        }
        if($_POST[$token] == $token){
            echo "โทเค็นการรักษาความปลอดภัยไม่ตรงกัน การร้องขอถูกยกเลิกเพื่อป้องกันการละเมิดความปลอดภัย โปรดลองอีกครั้ง" ;
            exit;        
        }
        echo  $_POST['name'];
   }

?>

 

ผลลัพธ์ 

 

หน้า index.php

 

หน้า index.php
หน้า index.php

 

หน้า sign.php (จะรับค่าจากหน้า index.php)

 

หน้า sign.php
หน้า sign.php

      หมายเหตุ : ตัวแปร token มีค่าไม่เท่ากับค่าที่ไดนามิคออกมา หรือไม่มีเลยจะแสดงว่า "โทเค็นการรักษาความปลอดภัยไม่ตรงกัน การร้องขอถูกยกเลิกเพื่อป้องกันการละเมิดความปลอดภัย โปรดลองอีกครั้ง"

 

อ้างอิงรูปภาพ : flickr.com

 

ข่าวสารเพิ่มเติมเกี่ยวกับ PHP

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
spa near me
โดย JackStack ศ 19 เม.ย. 2024 1:54 pm บอร์ด Programming - PHP
0
2
ศ 19 เม.ย. 2024 1:54 pm โดย JackStack View Topic spa near me
แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
โดย internTk21 ศ 19 เม.ย. 2024 11:56 am บอร์ด MindPHP News & Feedback
1
2
ศ 19 เม.ย. 2024 12:15 pm โดย internTk21 View Topic แจ้งปัญหาโพสบทความลงในเว็บบอร์ดส่วนตัวไม่ได้
สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
โดย eange08 ศ 19 เม.ย. 2024 9:56 am บอร์ด Programming - PHP
1
7
ศ 19 เม.ย. 2024 10:28 am โดย mindphp View Topic สอบถาม Google Structure ที่เหมาะกับคอร์สเรียนควรใช้แบบไหนดีค่ะ
คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว tar, zip
โดย mindphp พ 17 เม.ย. 2024 7:42 pm บอร์ด Linux - Web Server
0
36
พ 17 เม.ย. 2024 7:42 pm โดย mindphp View Topic คำสั่งรวมไฟล์ และ บีบอัดในคำสั่งเดียว  tar, zip
เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
โดย mindphp จ 15 เม.ย. 2024 11:10 pm บอร์ด PostgreSQL
1
159
จ 15 เม.ย. 2024 11:14 pm โดย mindphp View Topic เช็คขนาดพื้นที่ฐานข้อมูล แต่ละก้อน แต่ละฐานข้อมูลว่าใช้พื้นที่ไปเท่าไหร่ ด้วย Comamnd Line
การติดตั้ง WSL เพื่อใช้งาน Linux Terminal บน Windows
โดย tsukasaz ศ 12 เม.ย. 2024 2:25 pm บอร์ด Share Knowledge
0
184
ศ 12 เม.ย. 2024 2:25 pm โดย tsukasaz View Topic การติดตั้ง WSL เพื่อใช้งาน Linux Terminal บน Windows
Super Сasual Dating - Real Women
โดย heroxbay ศ 12 เม.ย. 2024 8:55 am บอร์ด Microsoft Office Knowledge & line & Etc
0
136
ศ 12 เม.ย. 2024 8:55 am โดย heroxbay View Topic Super Сasual Dating - Real Women
Unsurpassed Сasual Dating - True Females
โดย pongsu1968 ศ 12 เม.ย. 2024 5:47 am บอร์ด Microsoft Office Knowledge & line & Etc
0
157
ศ 12 เม.ย. 2024 5:47 am โดย pongsu1968 View Topic Unsurpassed Сasual Dating - True Females