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에 대한 기본적인 방어가 가능하지만, 완벽한 보안은 아니기에 최선의 방법을 지속적으로 찾아야 합니다.
'Programming Language > PHP' 카테고리의 다른 글
[PHP] 현재 서버 시간 가져오기 및 응용 (date, strtotime, time) (0) | 2020.12.20 |
---|---|
Creating default object from empty value 에러 해결 PHP (0) | 2020.09.01 |
[PHP] array_slice () 함수 (배열 자르기) (0) | 2020.01.06 |
[PHP] ini_set() 함수 (0) | 2020.01.05 |
[PHP] 첫 문자를 대문자로 치환하는 함수 - unfirst (0) | 2019.12.15 |
[PHP] 폼 입력 처리의 기본 ( GET, POST로 송수신하기 ) (0) | 2019.11.17 |
[PHP] preg_match ( 패턴일치 & 정규표현식 적용) (0) | 2019.10.17 |
[PHP] URL인코딩 & 디코딩 (0) | 2019.09.13 |