정보처리기사

[정보처리기사] CSRF 와 XSS 공격의 차이점

dongkeonkim 2023. 4. 21. 11:13
반응형

간단하게 요약하자면,

CSRF는 공격자가 사용자의 인증 정보를 이용하여 다른 사이트에 악의적인 요청을 보내는 것이며,

XSS는 공격자가 스크립트를 이용하여 사용자의 브라우저에서 악의적인 동작을 수행하는 것입니다.

 

자세히 확인하겠습니다

 

CSRF (Cross-Site Request Forgery)

다른 웹사이트에 "로그인한 사용자의 권한을 이용"하여, 웹사이트에 악성 요청을 보냅니다.
이를 통해 해커는 사용자의 권한을 이용하여 해당 사용자가 권한이 있는 일을 수행할 수 있습니다.

사용자 A가 은행 웹사이트에 로그인한 상태에서, 해커가 제작한 악성 웹사이트를 방문하는 경우를 가정해봅시다.

이때, 악성 웹사이트에는 은행 계좌 이체를 요청하는 스크립트가 포함되어 있습니다.

사용자 A가 악성 웹사이트를 방문하고, 악성 스크립트가 실행되면, 은행 웹사이트로부터 받은 사용자 A의 세션 아이디와 쿠키 등을 이용하여 이체 요청이 발생하게 됩니다.

은행 웹사이트에서는 유효한 요청으로 인식되어 처리합니다.

이를 방지하기 위해, 보통은 CSRF 토큰이라는 방법을 사용합니다.

이는 사용자의 브라우저와 서버 사이에서 주고받는 일종의 암호화된 문자열로, 이 토큰을 이용하여 해당 요청이 사용자가 의도적으로 보낸 것인지를 확인하는 방식입니다.

 

보통은 서버에서 이 CSRF 토큰을 생성하고, 이를 사용자의 세션 정보나 쿠키 등에 저장하여 사용합니다.

따라서, CSRF 공격을 방지하기 위해서는 보안적으로 신뢰할 수 있는 웹사이트만 사용하거나, 브라우저의 보안 설정을 활성화하고, 서버에서는 CSRF 토큰을 사용하여 요청의 유효성을 검증하는 등의 대책을 취해야 합니다.

 

XSS (Cross-site Scripting)

공격자가 "웹 페이지에 악성 스크립트를 삽입"하여 사용자의 브라우저에서 실행되게 하는 공격입니다.

XSS 공격은 보통 사용자가 웹 사이트를 방문할 때, 악성 스크립트가 담긴 링크를 클릭하거나, 입력 폼에 악성 스크립트를 입력하게 함으로써 발생합니다.

이 공격으로 인해 공격자는 사용자의 쿠키 정보, 세션 ID, 민감한 정보 등을 탈취하거나, 사용자의 계정을 빼앗을 수 있습니다.

 

XSS 공격을 방지하기 위한 대표적인 방법으로는 입력값 검증과 출력값 인코딩이 있습니다.

 

1) 입력값 검증

사용자가 입력한 값에 대해 필터링하거나, 특정한 패턴에 맞게 입력을 제한하는 것입니다.

 

2) 출력값 인코딩

웹 페이지에서 출력되는 값에 대해 인코딩 처리를 하는 것입니다.

악성 스크립트를 실행하는 데 필요한 태그 등을 문자 그대로 출력하게 되어 스크립트가 실행되지 않습니다.

 


 

 

반응형