Devdit
 

PHP ป้องกัน XSS เบื้องต้นด้วย htmlspecialchars

2.3K

PHP ป้องกัน XSS เบื้องต้นด้วย htmlspecialchars บทความนี้สอนการป้องกัน Cross-site scripting (XSS) หรือการแทรกสคริปต์ Client Side Script เช่น JavaScript ลงในเว็บไซต์โดยไม่ได้รับอนุญาต สามารถเขียนโปรแกรมเพื่อป้องกัน XSS เบื้องต้นได้ดังนี้

 

ตัวอย่าง พิจาราณาโค้ดด้านล่าง

<form action="index.php" method="post">
    กรุณากรอกชื่อ <input type="text" name="name">
    <input type="submit" value="ตกลง">
</form>
<?php
    isset( $_POST['name'] ) ? $name = $_POST['name'] : $name = "";
    if( !empty( $name ) ) echo "สวัสดี ยินดีต้อนรับ คุณ {$name}";
?>

ใส่ข้อมูลลงในช่องด้วย script ด้านล่าง และกด Enter

<script>alert('XSS');</script>

กรณีถ้าผู้ใช้งานกรอกข้อมูลชื่อตามปกติจะไม่มีปัญหา แต่ถ้าผู้ใช้งานกรอกเป็น script ตามด้านบนลงในช่อง input จะทำให้โปรแกรมแสดง alert พร้อมข้อความ XSS ออกมาโดยไม่ได้รับอนุญาต ซึ่งลักษณะการกระทำดังกล่าวถือว่าเป็น 1 ในการบุกรุกแบบ Cross-site scripting (XSS) เบื้องต้น

 

ตัวอย่าง PHP ป้องกัน XSS เบื้องต้นด้วย htmlspecialchars

<form action="index.php" method="post">
    กรุณากรอกชื่อ <input type="text" name="name">
    <input type="submit" value="ตกลง">
</form>
<?php
    isset( $_POST['name'] ) ? $name = $_POST['name'] : $name = "";
    if( !empty( $name ) ) echo "สวัสดี ยินดีต้อนรับ คุณ ".htmlspecialchars( $name );
?>

ผลลัพธ์

สวัสดี ยินดีต้อนรับ คุณ <script>alert('XSS');</script>

คำอธิบาย

PHP ป้องกัน XSS เบื้องต้น แนะนำให้ใช้คำสั่ง htmlspecialchars คลุมตัวแปรที่ต้องการป้องกัน หรือมีความเสี่ยงที่จะเกิด XSS ซึ่งคำสั่งนี้จะแปลงอักขระพิเศษ เป็นรหัสอักษร โดยมีรายละเอียดดังนี้

& แปลงเป็น &amp;
" แปลงเป็น &quot;
' แปลงเป็น &#039;
< แปลงเป็น &lt;
> แปลงเป็น &gt;
แก้ไข 2 ปีที่แล้ว
ชอบ
ลิ้งก์
แชร์
Devdit มีช่อง YouTube แล้ว
เราสร้างวิดีโอเกี่ยวกับเทคโนโลยี ทำตามง่ายๆ