본문 바로가기
Web Programming Language/PHP

PHP) magic_quotes_gpc 설정

by manchesterandthecity 2020. 10. 27.

magic_quotes_gpc 설정

 

magic_quotes_gpc 설정
php.ini 파일에서 magic_quotes_gpc 설정이 true 인경우 GET, POST, COOKIE 에 ', ", \ 가 있으면 \(역슬래시) 자동추가된다.

 

SQL Injection 공격실습을 위해서는 C드라이브 - php.ini파일 - magic_quotes_gpc 설정을 Off로 해주어 특수문자 사용이 가능하게 해준다.

 

 

 

php코딩시 변수에 ' , " 등이 있을경우에 대해서 글을 쓴적이 있다. 

위와같은 입력이 허용되면 SQL 인젝션 공격에 취약해지기 때문에 addslashes()를 해줘야한다. 

그러면 특수문자 앞에 \(역슬러시)가 붙기 때문에 입력값으로 인젝션 공격에 사용되는 특수문자가 들어왔을 때 이 특수문자를 일반문자열로 처리하여 SQL 인젝션을 방어할 수 있게 된다. 

그리고 데이터를 불러온후 표현할때는 stripslashes를 사용하여 특수문자 앞에 붙은 \ 를 제거하고 원래 데이터를 표현한다. 

 

사용자의 데이터 입력값에 쿼리를 조작하기 위한 ' 등이 있을경우 이를 \ 처리 해주므로 안전하게 된다.

get_magic_quotes_gpc()는 magic_quotes_gpc의 설정값을 반환한다.

 

 

 

<사용 예>

 

1. DB에 저장시 해당 문자에 \(역슬래시) 추가
$_POST['text'] = addslashes($_POST['text']);

2. 화면에 출력시 추가된 \(역슬래시) 제거
$_POST['text'] = stripslashes($_POST['text']);

3. magic_quotes_gpc 설정에 따른 방법
php.ini 파일에서 magic_quotes_gpc 설정이 true 인경우 GET, POST, COOKIE 에 ', ", \ 가 있으면 \(역슬래시) 자동추가

 


magic_quotes_gpc 설정값 true, false 확인하여 처리

 

if (!get_magic_quotes_gpc())
{
// false이면 \ 추가
$_POST['text'] = addslashes($_POST['text']);
}
else
{
// true이면 \ 제거
$_POST['text'] = stripslashes($_POST['text']);
}

 

 

 

 

출처 :

blog.naver.com/soul7992/221708477422

 

blog.naver.com/ilikebigmac/221378608109

댓글