본문 바로가기
SK shieldus Rookies 16기

[SK shieldus Rookies 16기] 클라우드 기반 스마트 융합 보안 과정 교육 정리(37일차)

by Challenge programmers 2023. 12. 14.

오늘 학습 주제

1. 취약점 진단 및 대응

 

 

 

 

취약점 진단 및 대응


- SQL Injection -

외부 입력값에 쿼리 조작 문자열 포함 여부를 확인하지 않고

쿼리문 생성 및 실행에 사용하는 경우

쿼리의 구조와 의미가 변형되어 실행되는 취약점

 

문제점

권한 밖의 데이터 접근이 가능

해당 데이터베이스가 동작하는 서버를 원격지에서 마음대로 조작(서버 제어권 탈취)

해당 쿼리를 통해 제공하는 기능을 우회 또는 오용 가능

 

 

select  * from users where id = 'a' and pw = 'b'

 

 

 

' → 문자열 시작과 끝을 나타내는 특수 부호,

'가 문자 그 자체로 인식되도록 이스케이프 처리( \' 를 사용해도 동일)

 

select  * from users where id = 'a'' and pw = 'b''

id 컬럼의 값이 "a' and pw = '의 값을 가지는 데이터를 조회하는 쿼리로 변경

 

 

- 안전한 코드 -

 

입력 → 처리 → 출력

 

입력

개발자가 의도한 형태와 내용의 입력(프로그램 내부에 정의, 보관된 값)

프로그램 외부에서 전달된 값은 안전하지 않음

 

 

처리

외부 입력을 최소화(꼭 필요한 것에 한해서 외부 입력을 처리)

외부 입력을 검증, 제한 후 사용(입력값 형식과 내용 검증)

 

예) <input type="text" name="id" maxlength="8" />

 

maxlength로 입력값의 길이를 제한

 

그러나 이 방법은 사용자 화면(클라이언트)에서 적용한 보안 규칙으로쿼리문 생성 및 실행에 그대로 사용하기 때문에 문제가 발생

 

프록시로 입력값을 변경하여 전송 가능

 

서버에서 입력값의 형식 검증을 수행하고클라이언트에 적용한 보안 규칙과 동일하거나 그 이상의 보안 규칙을 적용해야 함

 

 

 

- 이스케이프 -

메타문자(meta charcter) =의미 문자 = 특수 문자(기호)

어떤 기능에서 특별한 용도 또는 의미를 가지고 있는 문자

 

예) http://www.example.com/path/file?name=hong&age=23

? → 요청 파라미터의 시작= → 파라미터의 이름과 값을 구분& → 파라미터와 파라미터를 구분

 

이처럼 특별한 의미를 가진 문자들을 메타 문자라고 함

 

메타 문자에서 의미를 제거하고 문자 그 자체로 사용하고자 하는 것  이스케이프

 

이스케이프 방법인코딩 방법을 이용하여 처리특정 기능에서 약속한 방법으로 처리이스케이프를 의미하는 메타  문자( \ )를 이용해서 처리