교차 사이트 스크립팅이란 무엇입니까?

click fraud protection

웹 사이트에서 가장 일반적인 취약점 클래스 중 하나는 "교차 사이트 스크립팅" 또는 "XSS"입니다. XSS 취약점은 사용자가 JavaScript를 실행할 수 있는 곳입니다. 다양한 심각도를 가진 다양한 XSS 취약성 변종이 있습니다.

공격자가 다른 사용자의 세션에서 JavaScript를 실행할 수 있는 문제는 공격자가 피해자가 보는 웹사이트에 무엇이든 할 수 있다는 것입니다. 여기에는 피해자를 외부 웹사이트로 리디렉션하고, 인증 토큰을 훔치고, 지불 세부 정보를 모니터링하는 것이 포함됩니다.

XSS 취약점의 가장 심각한 형태는 "저장" 또는 "지속적인" 교차 사이트 스크립팅입니다. 공격자가 XSS 페이로드를 만든 다음 제출할 수 있으므로 데이터베이스에 저장됩니다. XSS 익스플로잇이 데이터베이스에 저장되면 광범위한 기간에 걸쳐 다른 사용자에게 영향을 미칠 수 있습니다.

Cross-Site Scripting의 또 다른 형태는 "Reflected"입니다. 이 유형은 어떤 시점에도 저장되지 않고 대신 페이로드가 브라우저에 포함됩니다. 일반적으로 이러한 유형의 XSS는 공격자가 피해자를 속여 악성 링크를 클릭하도록 하는 피싱 공격의 일부입니다.

일반적으로 대부분의 XSS 공격에는 페이로드가 어느 시점에서 서버로 전송되지만 일부 공격은 순전히 클라이언트 측, 서버로 전송되지 않고 대신 클라이언트 측에만 영향 자바스크립트. 이것은 JavaScript Document Object Model 또는 DOM에 유지되기 때문에 DOM 기반 XSS라고 합니다. 이러한 유형의 취약점은 서버에서 익스플로잇을 볼 수 없고 기록할 수 없기 때문에 식별하고 해결하기가 특히 어렵습니다.

역사적으로 XSS 취약성에 대한 예방 기술은 차단 목록을 사용하여 JavaScript에서 의미 있는 문자나 단어가 포함된 메시지를 거부하는 모든 사용자 제출 데이터를 필터링하는 것입니다. 이로 인해 일부 합법적인 사용자 제출을 방지하면서 필터에 대한 우회를 찾는 군비 경쟁이 발생하는 경향이 있었습니다. 올바른 솔루션은 HTML 엔터티를 사용하여 사용자 제출 데이터를 인코딩하는 것입니다. HTML 엔터티 모듈이 활성화된 경우 문자는 브라우저에서 문자를 올바른 기호로 표시하지만 코드로 취급하지 않는 형식으로 자동 인코딩됩니다.