Linux WEB

register_globals 옵션에 따른 변수 전달

2009.02.19 00:18

jook 조회 수:34739

보안상의 이유로 php.ini 파일의 register_globals 옵션을 off로 설정해 놓은 웹서버들이 많이 있으며,  이런 경우는 form 을 통해서 변수를 전달 할 때 아래와 같이 제약을 받게 된다.

ex>

입력 폼
=============================================
<form method="post" action="result.php">
<input type="text" name="subject" size="20" maxlength="10">
<input type="submit" value="확인">
</form>
=============================================


register_globals = on 일때

form으로부터 전달 받은 변수를 $_POST[subject], $subject 등과 같이 사용 할 수 있다.

result.php
===================================
<?
echo("$subject");        <--- 사용가능
echo("$_POST[subject]");  <--- 사용가능
?>
===================================



register_globals = off 일때

form으로부터 전달 받은 변수를 $subject 와 같은 형식으로는 사용할 수 없으며, $_POST[subject]의 형식으로 사용이 가능하다.

result.php
===================================
<?
echo("$subject");        <--- 사용 불가능
echo("$_POST[subject]");  <--- 사용 가능
?>
===================================

단, 아래와 같이 result.php상단에 아래와 같은 형식으로 extract 선언을 하거나, header 파일에 선언하여 include 한 후에는 $subject 와 같은 형식으로 변수 사용이 가능하다.

result.php
===================================
<?
@extract($_GET);
@extract($_POST);
@extract($_SERVER);

echo("$subject");        <--- 사용가능
echo("$_POST[subject]");  <--- 사용가능
?>
===================================


-tip
서버의 정책이 register_globals=off 일때, 특정 가상호스트나, 특정 디렉토리 하위에서 register_globals=on 으로 사용 가능하다.
가상호스트 설정 부분에 아래와 같이 php_flag 옵션으로 추가를 하거나, 특정 디렉토리 내에 .htaccess 파일을 생성해서 php_flag register_globals on 을 추가하고 사용하면 된다.

<VirtualHost xxx.xxx.xxx.xxx>
   ...
php_flag register_globals on
   ...
</VirtualHost>

번호 제목 글쓴이 날짜 조회 수
43 ZendOptimizer 3.3.9 설치 file 호스트웨이 2012.06.01 17547
42 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 17343
41 Apache / PHP 최신버전 설치하기 호스트웨이 2015.09.25 16496
40 phpize를 이용하여 모듈 추가 file 호스트웨이 2012.03.15 15587
39 Nginx 설치 호스트웨이 2012.08.31 14900
38 PHP-5.3 버전 이상에서 Deprecated 에러 발생시 처리 방법 호스트웨이 2012.06.22 14740
37 httpd-2.4 설치하기 호스트웨이 2012.09.27 14436
36 CentOS 6.3 에 apache, php, mysql, phpmyadmin(LAMP) 설치하기 #2 호스트웨이 2012.08.07 14203
35 APM 및 OS 버전 확인 하는 방법 호스트웨이 2012.03.30 13992
34 아파치 실행시 libphp5.so 에러 호스트웨이 2012.09.14 13525
33 mod_evasive를 이용한 웹 DDoS 방어 호스트웨이 2014.08.19 13114
32 Apache 재시작시 세션 끊어짐 현상 호스트웨이 2012.10.12 12767
31 Linux log 분할 방법 (logrotate) 호스트웨이 2012.04.06 12593
30 PHP 컴파일시 /usr/bin/ld: cannot find -lltdl 오류 호스트웨이 2012.07.13 12562
29 httpd.pid 파일 오류 메시지 (20014) 호스트웨이 2015.09.12 11937
28 PHP 사용 시 특정함수 사용제한 하는 방법 호스트웨이 2012.08.03 11514
27 PHP 속도 향상을 위한 eAccelerator 설치 호스트웨이 2012.06.15 11264
26 Apache Log 관리 방법 (Logrotate) 호스트웨이 2015.09.17 11206
25 Apache-Tomcat Multi Instance 설정 file 호스트웨이 2015.05.28 10718
24 Symbolic link not allowed or link target not accessible 에러 발생 시 호스트웨이 2012.11.16 10571