본문 바로가기

Programming Language/PHP

[PHP] addslashes (), stripslashes () 와 get_magic_quotes_gpc ()함수

 

 

 

DB 작업을 하다보면 쿼리를 작성하게 됩니다.

이때 DB 시스템은 큰따옴표(") , 작은따옴표(') ,  백슬래시(\) , NULL byte를 문자열을 구분하는 등의 기준으로 사용됩니다.

하지만, 하나의 문자열 안에 따옴표가 들어가면 오류가 발생하는 경우가 흔히 있습니다.

이러한 예상치 못한 오류는 취약점으로 이어지기도 하기에, DB관리에 주의 해야 합니다.

 

 

 

 

 

 

 

● addslashes ()

: 데이터베이스의 질의에서 처리할 필요가 있는 문자 앞에 백슬래시를 붙인 문자열을 반환합니다.

예를 들면, 'It's a pen' 이렇게  쿼리를 전송하면 It뒤에 '(작은따옴표)로 인해 오류가 발생합니다.

그래서 따옴표들을 기준을 가지고 다르게 표현해주어야 하는데 이것을 흔히 이스케이프 시킨다고 합니다.

'It\'s a pen' 으로 백슬래시를 붙여 바꿔 작업해주는것이 addslashes의 기능 입니다.

 

 

 

stripslashes ()

: addslashes함수를 통해 백슬래시를 붙여주었으니 DB에서 다시 꺼내왔을때는 추가되었던 백슬래시를 제거해주어야 하는데 제거해주는 기능이 stripslashes 입니다.

 

 

get_magic_quotes_gpc 

: php.ini 설정 파일에 745번째 줄에 있는 get_magic_quotes_gpc 옵션을 on으로 설정하면

자동적으로 모든 GET, POST, COOKIE 데이터에 위에서 언급한 addslashes()함수를 실행합니다.

만약 get_magic_quotes_gpc 을 on으로 설정한 후, 문자열에서 addslashes()를 또 사용하면 두번 이스케이프 처리가

되므로 주의해야 합니다.

 

 

 

addslashes()와 get_magic_quotes_gpc 옵션으로 SQL Injection에 대한 기본적인 방어가 가능하지만, 완벽한 보안은 아니기에 최선의 방법을 지속적으로 찾아야 합니다.