시큐어 코딩

XSS Injection

그zi운아이 2023. 6. 7. 17:53

xss Injection

xss란 웹 어플리케이션에서 일어나는 취약점으로 웹 페이지 악의적인 스크립트를 포함시켜 사용사 측에서 실행되게 유도하는 공격 기법입니다.xss공격은 스크립트 언어와 취약한 코드를 공격 대상으로 하고 로그인 세부정보나 쿠키를 탈취하는 방식으로 진행 됩니다. xss 공격은 크케 Stored xss, Reflected xss,Dom xss이 있습니다.

 

Stored xss

store xss 공격은 입력 form에 악성 스크립트를 삽입하여 DB에 저장시키고 사용자가 싸이트를 방문하여 악성 스크립트가 저장되어 있는 페이지를 호출시 서버는 악성 스크립트를 사용자에게 전달하여 악성 스크립트가 실행되면서 정보를 탈취 하는 공격방법이다. 주로 게시글,댓글등에서 많이 사용 된다.

 

1) 공격자는 서버로 악성스크립트를 포함한 게시글 작성

2) 공격자는 사용자에게 URL노출을 통해 접근 유인

3) URL을 통해 접근한 사용자의 서버로부터 페이지 요청

4) 서버의 페이지 응답과 악성 스크립트 실행

 

Reflected xss

Reflected 서버가 외부에서 입력받은 악성 스크립트가 포함된 URL 파라미터 값을 브라우저에서 응답할때 발생한다. 악성 스크립트가 삽입된 URL을 사용자가 확인할 수 없게하여 이메일 등으로 실행을 유도하는 공격이다.

 

1) 공격자는 악성 스크립트가 포함된 URL을 사용자에게 이메일 등으로 제공한다,

2) 사용자는 URL에 접근한다.

3) 서버는 요청에 응답한다.

5) 공격자의 스크립트는 사용자의 부라우저에서 실행된다.

6) 사용자의 쿠키나 개인정보가 탈취된다.

 

Dom xss

Reflected xss와 비슷하지만 Reflected xss 및 stored xss 공격은 서버 애플리케이션 취약점으로 인해 응답 페이지에 악성 스크립트가 포합되어 공격하는 것인 반면 Dom xss는 서버와 관계없이 발생하는 것이 차이점이다.

외부에서 입력받은 악성 스크립트가 포함된 URL이 서버를 거치지 않고 Dom으로 실행되며 공격한다.

 

보안방법

1.입력 값 치환 : 외부입력값에 스크립트가 삽입되지 못하도록 문자 변환 함수를 사용하여 치환한다.

2 입력 값 제한 : 허용하는 태그들을 화이트 리스트로 만들어 해당 태그만 지원한다,

3.입출력 값 검증 : 입력 값을 그래도 사용하는 것이아는 확인,예외처리를 한다.

4.xss 방어 라이브러리 사용 : 자바 프레임워크 spring등의 프레임 워크를 통해 xss를 차단해는 방법

 

 

'시큐어 코딩' 카테고리의 다른 글

SQL Injection  (1) 2023.06.02