어플리케이션

웹 애플리케이션 보안에 관련된 두 가지 주요 공격 유형인 XSS(Cross-Site Scripting)와 CSRF(Cross-Site Request Forgery)에 대해 알아보겠습니다.

forward error correction Circle 2024. 5. 14. 17:35
반응형

 웹 애플리케이션 보안에 관련된 두 가지 주요 공격 유형인 XSS(Cross-Site Scripting)와 CSRF(Cross-Site Request Forgery)에 대해 알아보겠습니다.

 

Ⅰ. XSS 란 ?

 Cross-Stie Scripting 의 약자로 공격자가 악의적인 스크립트를 삽입하여 사용자의 브라우저에서 실행되도록 함으로써 공격을 수행하는 기술입니다. 사용자의 개인 정보를 탈취하거나 사용자를 다른 사이트로 리다이렉트하는 등의 악의적인 행위를 수행할 수 있습니다. XSS 공격은 주로 사용자가 입력하는 데이터를 신뢰하고 사용하는 웹 애플리케이션에서 발생합니다. 예를 들어, 공격자가 웹 사이트의 취약점을 이용하여 사용자에게 입력 폼 또는 채팅 창을 통해 악의적인 스크립트를 삽입할 수 있습니다. 이 스크립트는 사용자의 브라우저에서 실행되어 해당 사용자의 세션 쿠키를 탈취하거나 다른 악의적인 동작을 수행할 수 있습니다.

 

Ⅱ. XSS 공격 유형

 ⅰ) Reflected XSS(반사형 XSS): 공격자가 피해자에게 악의적인 링크를 전송하여, 사용자가 해당 링크를 클릭할 때 악의적인 스크립트가 서버로 전송되고, 서버에서 이를 실행하여 공격이 발생하는 유형입니다.

 ⅱ) Stored XSS(저장형 XSS): 악의적인 스크립트가 웹 서버에 저장되어 있고, 해당 페이지를 요청하는 모든 사용자에게 스크립트가 반환되어 실행되는 유형입니다.

 ⅲ) DOM-based XSS(DOM 기반 XSS): 동적으로 생성된 웹 페이지에서 발생하는 XSS로, 클라이언트 측에서 실행되는 JavaScript 코드에 의해 악의적인 스크립트가 발생하는 경우입니다.

합니다. 또한 Content Security Policy(CSP)와 같은 보안 정책을 구현하여 악의적인 스크립트의 실행을 방지할 수 있습니다. 개발자 및 시스템 관리자는 XSS 공격에 대한 인식을 높이고 적절한 보안 조치를 취하여 웹 애플리케이션의 보안을 강화해야 합니다.

 

Ⅲ. XSS 공격 대응 방법

 ⅰ) 입력 데이터의 검증: 사용자가 입력한 데이터를 검증하여 악성 스크립트를 필터링합니다. 입력 데이터에는 HTML 태그, 자바스크립트 코드, 스타일 시트 등이 포함될 수 있으므로, 특수 문자를 이스케이프하거나, 허용되는 태그와 속성만 허용하도록 필터링합니다.
 ⅱ) 출력 시 적절한 이스케이핑: 사용자가 입력한 데이터를 웹 페이지에 출력할 때 적절한 이스케이핑을 수행하여 XSS 공격을 방지합니다. 이스케이핑은 사용자 입력 데이터를 해석할 수 없는 문자열로 변환하여 웹 브라우저가 해당 데이터를 HTML로 해석하지 못하도록 합니다.
 ⅲ) Content Security Policy(CSP) 설정: CSP를 사용하여 허용되는 리소스 및 스크립트 실행 정책을 명시적으로 설정하여 XSS 공격을 방지할 수 있습니다. CSP를 사용하면 웹 페이지에서 로드되는 리소스 및 스크립트의 출처를 제한하고, 인라인 스크립트 실행을 방지할 수 있습니다.
 ⅳ) HTTP Only 쿠키 사용: 민감한 정보를 저장하는 쿠키에 HTTP Only 속성을 설정하여 자바스크립트로의 접근을 차단합니다. 이렇게 하면 XSS 공격으로부터 쿠키를 보호할 수 있습니다.
 ⅴ) 웹 애플리케이션 방화벽(WAF) 사용: 웹 애플리케이션 방화벽을 사용하여 악의적인 요청을 필터링하고 차단함으로써 XSS 공격을 방지할 수 있습니다. WAF는 웹 애플리케이션의 보안을 강화하는 데 도움이 됩니다.
 ⅵ) 보안 취약점 스캐닝 및 테스트: 정기적인 보안 취약점 스캐닝과 테스트를 수행하여 XSS 취약점을 발견하고 수정하는 것이 중요합니다. 보안 업데이트 및 패치를 적용하여 애플리케이션을 최신 상태로 유지해야 합니다.

 

Ⅳ. CSRF 란?

 Cross-Site Request Forgery 약자로 웹 애플리케이션에서 발생하는 보안 취약점 중 하나로, 사용자의 인증된 세션을 이용하여 악의적인 요청을 전송하는 공격 기법입니다. 공격자는 피해자의 브라우저가 이미 인증된 상태에서 악의적인 요청을 전송하도록 유도합니다. 이를 위해 공격자는 피해자에게 악성 코드가 포함된 이메일, 소셜 미디어 메시지, 혹은 웹 페이지 등을 통해 악성 링크나 이미지 등을 제공합니다. 피해자가 해당 링크나 이미지를 클릭하거나 방문하면, 그 순간 피해자의 브라우저는 공격자가 원하는 악의적인 요청을 서버에 전송합니다.

 이러한 CSRF 공격을 통해 공격자는 피해자의 권한으로 서버에 요청을 보내거나, 피해자의 계정으로 민감한 작업을 수행할 수 있습니다. 예를 들어, 피해자의 계정으로 금전적인 거래를 수행하거나, 계정 설정을 변경하거나 삭제할 수 있습니다.

 

 

Ⅴ. CSRF(Cross-Site Request Forgery) 공격 대응 방법
 ⅰ) CSRF 토큰 사용: 웹 애플리케이션에서 사용자의 세션과 관련된 랜덤한 CSRF 토큰을 생성하여 모든 폼 요청과 함께 전송합니다. 이 토큰은 사용자의 세션과 연결되어 있으며, 서버는 요청을 받을 때마다 이 토큰을 검증하여 요청의 유효성을 확인합니다.
 ⅱ) SameSite 속성 설정: 쿠키에 SameSite 속성을 설정하여 외부 사이트로부터의 요청을 차단할 수 있습니다. SameSite 속성을 Strict로 설정하면 외부 사이트로부터의 요청이 차단되며, Lax로 설정하면 일부 요청은 허용될 수 있습니다.
 ⅲ) Custom 헤더 사용: 사용자의 브라우저에 사용자 지정 헤더를 추가하여 요청의 유효성을 검증할 수 있습니다. 이 헤더는 사용자의 세션과 관련된 값이나 서버 측에서 생성된 토큰을 포함할 수 있습니다.
 ⅳ) Referrer 검증: 서버에서 Referrer 헤더를 검증하여 요청이 원래 웹 애플리케이션에서 온 것인지 확인할 수 있습니다. 그러나 Referrer 헤더는 모든 브라우저에서 지원되지 않을 수 있으며, 조작될 수도 있으므로 완벽한 보안을 보장하지는 않습니다.
 ⅴ) 사용자에게 경고 메시지 표시: 웹 애플리케이션이 CSRF 공격을 감지하면 사용자에게 경고 메시지를 표시하여 악의적인 동작을 실행하기 전에 사용자의 확인을 요청할 수 있습니다

 

Ⅵ. XSS 와 CSRF 간단 요약

  XSS (Cross-Site Scripting) CSRF (Cross-Site Request Forgery)
공격 방법 클라이언트에서 악성 스크립트 실행 권한을 갈취하여 가짜 요청을 서버에 전송
공격 대상 클라이언트를 공격 대상 서버를 공격 대상
대응 방법 XSS 공격을 방지하기 위해서는 입력 데이터의 검증과 출력 시 적절한 이스케이핑을 수행하는 것이 중요 CSRF 토큰을 사용하여 요청에 대한 인증을 수행하여 요청의 유효성을 확인합니다.

 

 

반응형