HTML 인젝션
API 보안 테스트에서 HTML 인젝션 취약점을 탐지하고 XSS 공격을 방지하는 방법을 설명합니다.
설명 # 문자열을 지원하는 모든 필드에 HTML 인젝션을 통한 XSS를 검사합니다. 여기에는 경로, 쿼리, 헤더와 같은 HTTP 요청의 일부뿐만 아니라 XML 필드, JSON 필드 등의 본문 파라미터도 포함됩니다. 탐지는 알려진 HTML 지원 필드에 주입된 값이 응답에 포함되는지 모니터링하여 수행됩니다. 해결 방법 # 크로스 사이트 스크립팅(XSS)은 공격자가 제공한 코드를 사용자의 브라우저 인스턴스에 삽입하는 공격 기법입니다. 브라우저 인스턴스는 일반 웹 브라우저 클라이언트이거나, WinAmp 내부 브라우저, RSS 리더, 이메일 클라이언트 등의 소프트웨어 제품에 내장된 브라우저 객체일 수 있습니다. 코드 자체는 일반적으로 HTML/JavaScript로 작성되지만, VBScript, ActiveX, Java, Flash 또는 기타 브라우저가 지원하는 기술로 확장될 수도 있습니다. 공격자가 사용자의 브라우저에서 코드를 실행시키면, 해당 코드는 호스팅 웹 사이트의 보안 컨텍스트(또는 영역) 내에서 실행됩니다. 이 수준의 권한으로 코드는 브라우저가 접근할 수 있는 모든 민감한 데이터를 읽고, 수정하고, 전송할 수 있습니다. 크로스 사이트 스크립팅 공격을 받은 사용자는 계정이 탈취(쿠키 도용)되거나, 브라우저가 다른 위치로 리다이렉트되거나, 방문 중인 웹 사이트가 전달하는 위조된 콘텐츠를 보게 될 수 있습니다. 크로스 사이트 스크립팅 공격은 본질적으로 사용자와 웹 사이트 간의 신뢰 관계를 훼손합니다. 파일 시스템에서 콘텐츠를 로드하는 브라우저 객체 인스턴스를 사용하는 애플리케이션은 로컬 머신 영역에서 코드를 실행하여 시스템 침해를 허용할 수 있습니다. 크로스 사이트 스크립팅 공격에는 비지속형, 지속형, DOM 기반의 세 가지 유형이 있습니다. 비지속형 공격과 DOM 기반 공격은 사용자가 악성 코드가 삽입된 특별히 제작된 링크를 방문하거나, 취약한 사이트에 게시될 때 공격을 실행하는 웹 폼이 포함된 악성 웹 페이지를 방문해야 합니다. 악성 폼을 사용하는 것은 취약한 리소스가 HTTP POST 요청만 허용하는 경우에 주로 발생합니다. 이런 경우 폼은 피해자의 인지 없이 자동으로 제출될 수 있습니다(예: JavaScript 사용). 악성 링크를 클릭하거나 악성 폼을 제출하면 XSS 페이로드가 반환되어 사용자의 브라우저에서 해석되고 실행됩니다. 임의의 요청(GET 및 POST)을 전송하는 또 다른 기법은 Adobe Flash와 같은 내장 클라이언트를 사용하는 것입니다. 지속형 공격은 악성 코드가 웹 사이트에 제출되어 일정 기간 저장될 때 발생합니다. 공격자가 즐겨 노리는 대상으로는 메시지 게시판 포스트, 웹 메일 메시지, 웹 채팅 소프트웨어 등이 있습니다. 피해자인 사용자는 추가적인 사이트나 링크(예: 공격자 사이트 또는 이메일로 전송된 악성 링크)와 상호 작용할 필요 없이, 단순히 코드가 포함된 웹 페이지를 보기만 하면 됩니다. 링크 # OWASP CWE
