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 ซึ่งคำสั่งนี้จะแปลงอักขระพิเศษ เป็นรหัสอักษร โดยมีรายละเอียดดังนี้
& แปลงเป็น &
" แปลงเป็น "
' แปลงเป็น '
< แปลงเป็น <
> แปลงเป็น >