Linux WEB

register_globals 옵션에 따른 변수 전달

2009.02.19 00:18

jook 조회 수:34709

보안상의 이유로 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 PHP 컴파일시 /usr/bin/ld: cannot find -lltdl 오류 호스트웨이 2012.07.13 12546
42 [Apache] Image 관련 Log 남기지 않기 호스트웨이 2012.07.13 9705
41 PHP 업로드 파일 용량 제한 설정 호스트웨이 2012.07.06 10042
40 SSL config error 조치사항 호스트웨이 2012.06.29 9631
39 Apache2.4.x 버전 설치 호스트웨이 2012.06.22 23693
38 PHP-5.3 버전 이상에서 Deprecated 에러 발생시 처리 방법 호스트웨이 2012.06.22 14714
37 PHP 속도 향상을 위한 eAccelerator 설치 호스트웨이 2012.06.15 11264
36 ZendOptimizer 3.3.9 설치 file 호스트웨이 2012.06.01 17546
35 웹페이지에 사용자 인증 사용하기 호스트웨이 2012.05.18 8972
34 apache ssl 시작시 오류 메세지 호스트웨이 2012.05.11 10054
33 mod_GeoIP를 이용한 국가 IP 확인 및 국가별 접속 제한 호스트웨이 2012.05.04 19935
32 apache에서 cgi를 사용하기 위한 설정 방법 호스트웨이 2012.04.27 20125
31 Zend Guard Loader 설치 호스트웨이 2012.04.20 17811
30 PHP에서 MS-SQL 서버를 연동하기 위한 방법 호스트웨이 2012.04.13 25303
29 Linux log 분할 방법 (logrotate) 호스트웨이 2012.04.06 12587
28 APM 및 OS 버전 확인 하는 방법 호스트웨이 2012.03.30 13982
27 phpize를 이용하여 모듈 추가 file 호스트웨이 2012.03.15 15582
26 mod_rewrite 모듈 설치 및 기본 사용법 sylee 2009.07.02 38418
25 아파치2 에서 mod_cband 사용법 sylee 2009.06.05 24553
» register_globals 옵션에 따른 변수 전달 jook 2009.02.19 34709