JavaScript และความปลอดภัย: มุมมองสองด้าน
JavaScript เป็นภาษาที่ ทุกเว็บไซต์ใช้ (95%+) ทำให้กลายเป็น พื้นที่โจมตี (Attack Surface) กว้างที่สุด ในโลก แต่ก็เป็น เครื่องมือสำคัญสำหรับนักความปลอดภัย ด้วย
🔴 JavaScript เป็นช่องโหว่ (Attack Vector) - ด้านโจมตี
1. Cross-Site Scripting (XSS) - ช่องโหว่ #1 ของเว็บ
- Reflected XSS: สคริปต์ใน URL/Parameter → Reflect กลับใน Response → Execute ใน Browser เหยื่อ
- Stored XSS: สคริปต์เก็บใน Database (Comment, Profile) → Execute ทุกคนที่เปิดหน้านั้น
- DOM-based XSS: JavaScript ฝั่ง Client จัดการข้อมูลไม่ปลอดภัย (source: location.hash, document.referrer → sink: innerHTML, eval)
Impact: Session Hijacking (Cookie Theft), Credential Theft, Defacement, Malware Download, Keylogging, Crypto Mining
2. Cross-Site Request Forgery (CSRF)
- หลอก Browser เหยื่อส่ง Request ไปยัง Target Site พร้อม Cookie/Session ของเหยื่อ
- JavaScript สร้าง Form/Ajax Request อัตโนมัติเมื่อเหยื่อเปิดหน้าเว็บโจมตี
3. Clickjacking / UI Redressing
- ใช้ iframe + CSS opacity=0 วางปุ่มปลอมบนปุ่มจริง (Like, Transfer, Delete)
- JavaScript ควบคุมตำแหน่ง iframe ตามเมาส์
4. Client-Side Prototype Pollution
- JavaScript Prototype Chain ถูกปนเปื้อน → เปลี่ยนพฤติกรรม Object ทั่วไป → RCE/DoS
5. Supply Chain Attacks (NPM/Supply Chain)
- Malicious Package ใน NPM (event-stream, ua-parser-js, coa, rc) → รันใน Build/Production
- Dependency Confusion, Typosquatting
6. Exploit Kits & Drive-by Downloads
- JavaScript บนเว็บที่ถูกโจมตี/โฆษณา (Malvertising) → Fingerprint Browser/Plugin → ส่ง Exploit เหมาะสม (Browser 0-day, Flash, Java)
7. Browser Fingerprinting & Tracking
- Canvas Fingerprinting, AudioContext, WebGL, Font Enumeration, Battery API, Hardware Concurrency
- Track ผู้ใช้ข้ามเว็บไซต์ แม้ไม่ Login/ไม่มี Cookie
🟢 JavaScript เป็นเครื่องมือป้องกัน (Defensive) - ด้านป้องกัน
1. Client-Side Security Controls
- Content Security Policy (CSP): Header `Content-Security-Policy` ควบคุม Script/Style/Font/Image Source ที่โหลดได้ (Mitigate XSS)
- Subresource Integrity (SRI): `