Linux WEB

register_globals 옵션에 따른 변수 전달

2009.02.19 00:18

jook 조회 수:34736

보안상의 이유로 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 업로드 파일 용량 제한 설정 호스트웨이 2012.07.06 10044
42 [Apache] Image 관련 Log 남기지 않기 호스트웨이 2012.07.13 9705
41 PHP 컴파일시 /usr/bin/ld: cannot find -lltdl 오류 호스트웨이 2012.07.13 12560
40 PHP 사용 시 특정함수 사용제한 하는 방법 호스트웨이 2012.08.03 11508
39 CentOS 6.3 에 apache, php, mysql, phpmyAdmin(LAMP) 설치하기 #1 호스트웨이 2012.08.07 17343
38 CentOS 6.3 에 apache, php, mysql, phpmyadmin(LAMP) 설치하기 #2 호스트웨이 2012.08.07 14203
37 nginx - redirect 설정 호스트웨이 2012.08.24 17883
36 Nginx 설치 호스트웨이 2012.08.31 14900
35 Apache Max Client 값 수정 호스트웨이 2012.08.31 19639
34 SSL 패스워드 삭제 하기 호스트웨이 2012.09.05 20690
33 apache internal dummy connection 로그 생성 방지하기 호스트웨이 2012.09.06 18696
32 아파치 실행시 libphp5.so 에러 호스트웨이 2012.09.14 13524
31 httpd-2.4 설치하기 호스트웨이 2012.09.27 14436
30 failed to open stream: Too many open files in 에러메시지 출력 시 해결방법 호스트웨이 2012.10.03 7626
29 apache 구동시 "파일 크기 제한을 초과함 $HTTPD -DSSL" 에러메시지 출력에 대한 해결방법 호스트웨이 2012.10.11 9405
28 Apache 재시작시 세션 끊어짐 현상 호스트웨이 2012.10.12 12761
27 [php] 세션 유지시간 설정하기 호스트웨이 2012.10.25 17805
26 CentOS6 64bit openssl 설치시 에러 조치사항 호스트웨이 2012.11.02 7609
25 Symbolic link not allowed or link target not accessible 에러 발생 시 호스트웨이 2012.11.16 10566
24 Ubuntu 아파치 웹서버에서 index.php 다운로드 창이 뜰 경우 호스트웨이 2012.12.13 8241