본문 바로가기

기타

보안

반응형

XSS, CSRF, SQL Injection 에 대해 정리해보았습니다.

 

XSS(Cross Site Script)

사용자 입력 값에 대해 필터링이 제대로 이뤄지지 않아 공격자가 악의적인 스크립트를 삽입하여

해당 스크립트를 희생자측에서 동작하도록 설정하는 악의적인 행위를 수행하는 취약점입니다.

이를 이용하여 사용자의 개인정보를 비롯해 쿠키정보, 악성코드 감염, 웹 페이지 변조 등의 공격을 수행할 수 있습니다.

 

XSS 공격에 대응하기 위해서는 사용자 입력값 검증을 반드시 서버단에서 수행해야합니다.

사용자 입력 문자열에서 HTML 코드로 인식될 수 있는 '특수문자'는 일반문자로 치환하여 처리해야합니다.

예를 들어 '<' 는 '&lt 이런식으로 치환하여 처리해야합니다.

 

CSRF(Cross-site Request Forgery)

사용자가 자신의 의지와 무관하게 공격자가 의도한 행동을 하여 특정 웹페이지를 보안에 취약하게 하거나 수정, 삭제 등의 작업을 수행하게 하는 공격방법입니다.

 

CSRF 공격에 대응하기 위해서는 Referer 체크 방법이 있습니다. Referer은 HTTP header에 있는 정보로 요청된 페이지의 정보를 가지고 있습니다.

패스워드 변경과 같은 경우 세션에 토큰을 발급하여 해당 토큰이 없는 경우 동작이 이뤄지면 요청을 거부하는 방법을 통해 사용자가 실제로 변경을 요청한 경우에만 변경을 해주는 방법도 있습니다.

또한, CAPTCHA를 이용하는 방법도 있습니다.

 

SQL Injection

임의의 SQL문을 주입하고 실행되게 하여 DB가 비정상적인 동작을 하도록 조작하는 행위입니다.

 

SQL Injection 공격에 대응하기 위해서는 입력 값에 대한 검증을 수행해야합니다.

또한 Prepared Statement 구문을 사용하면 사용자의 입력값이 DB의 파라미터로 가기전에 DBMS가 미리 컴파일하여 실행하지 않고 대기합니다. 이후에 들어오는 사용자 입력 값은 문자열로 인식하기 때문에 공격자를 방어할 수 있습니다.

또한, 공격자가 DB의 테이블명이나 컬럼명, 쿼리문을 알 수 없도록 에러페이지가 사용자에게 보여지지 않도록 에러 페이지나 메시지박스를 띄우도록 해야합니다.

 

 

반응형

'기타' 카테고리의 다른 글

[Golang] Go 시작하기  (0) 2021.07.27
프로세스와 스레드  (0) 2020.10.03
Semaphore & Mutex  (0) 2020.09.10
git  (0) 2020.09.02
SQLD  (0) 2020.09.02