JavaScript 공격 및 방어 (XSS/CSRF)

Source

  • Evernote/Technote scraps/Script Junkie JavaScript AttackDefend.md

Summary

이 문서는 웹 애플리케이션 보안의 중요성을 강조하며, OWASP Top 10 중 크로스 사이트 스크립팅(XSS)과 크로스 사이트 요청 위조(CSRF) 두 가지 공격 유형을 다룹니다. 특히 XSS 공격의 세 가지 유형(저장형, 반사형, DOM 기반)을 설명하고, 반사형 XSS의 작동 원리를 간단한 코드 예시로 보여줍니다. 방어 전략으로는 모든 입력 데이터의 출처를 의식하고, Microsoft AntiXSS 라이브러리 등을 사용하여 서버 측에서 입력 및 출력 데이터를 적절히 인코딩(정제)하는 방법을 제시합니다.

Key Points

  • 웹 개발 시 보안은 종종 간과되지만, XSS와 CSRF와 같은 공격은 쉽게 간과될 수 있는 심각한 위협입니다.
  • XSS는 사용자가 신뢰하는 웹사이트를 통해 악의적인 스크립트를 실행하는 공격으로, 저장형(Stored), 반사형(Reflected), DOM 기반(DOM-based) 세 가지 유형이 있습니다.
  • 반사형 XSS 예시: 쿼리 스트링의 사용자 입력을 검증 없이 HTML에 직접 삽입하면 악성 스크립트가 실행될 수 있습니다.
  • XSS 방어 핵심: 모든 입력(데이터베이스, 웹 서비스, 설정 파일 등)을 신뢰하지 않고, 서버 측에서 데이터를 정제(Sanitization)해야 합니다.
  • 구체적 조치: Microsoft AntiXSS 라이브러리 등의 도구를 사용하여 HTML, JavaScript, CSS, XML 등 컨텍스트에 맞는 인코딩을 적용하여 입력과 출력을 보호합니다.