sun's longitude:241 48 26.04 
· 자유게시판 · 묻고답하기 · 알파문서 · RPMS list
· 사용자문서 · 팁/FAQ모음 · 리눅스Links · 자료실
· 서버정보 · 운영자 · Books/FAQ · FreeBSD
/board/delete.php:소스보기  

질문과 답변 게시판입니다.

현재 실시간으로 이곳 서버의 설정파일(몇개)를 보여주고 있습니다.
서버의 설정내용에 관한 질문은 먼저 이곳 서버의 설정내용을 참고하시길 바랍니다.

[*** 쓰기 금지단어 패턴 ***]
글 본문 중간에 업로드할 이미지를 추가하는 방법 : @@이미지이름@@
ex) @@foo.gif@@
 ★ 글 지우기 항목입니다. 한번 더 생각하시고 결정하십시오.!!!
제목 4569 번 글의 답장글 : Re: [문의] php parsing 쪽의 보안 관련
 이름  산이 [홈]http://linuxchannel.net/

[작은또치]님이 남기신 글:

>-----------------------------------------
>답변자가 기본적으로 참고할 내용입니다.
>- 배포판(옵션) : 리눅스 8.0
>- 커널버전(옵션) : Linux 2.4.20-24.8 i686
>- 데몬버전(예:apache 1.3.27) : Apache/1.3.28
>- 데몬설치유형(RPM/컴파일/기타)
> :
>-----------------------------------------
>
>안녕 하세요...
>보완 인터넷 서핑시...
>
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>php parsing 쪽의 보안 관련 다음의 php 옵션이 변경 적용됩니다.
>
>사유) 동 서버의 타 호스트 유저의 소스 코드의 접근관련 보안 문제 처리
>
>register_globals = On [변경전]
>register_globals = Off [변경후]
>
>해당과 관련하여, 소스 코드의 수정 작업이 필요할 수 있습니다.
>해당의 정보를 개별 적용을 희망하실 경우,
>
>public_html 폴더 하위에
>.htaccess 파일명으로 옵션 개별 적용을 등록하시면 됩니다.
>(주의: .htaccess.txt 혹은 .htaccess.php 와 같이 뒤에 확장자가 있으면 안됩
>니다)
>
>public_html/.htaccess ---- 파일의 내용
>--------------------------------------
>php_flag register_globals on
>--------------------------------------
>
>부득히, 보안관련 설정변경이 불가피하니, 양해 바랍니다.
>~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
>
>꼭 해야 하나요...
>
>해야 한다면, 어떻게 해야 하나요..
>
>php.ini ==> 이렇게 수정 하고
>register_globals = On [변경전]
>register_globals = Off [변경후]
>
>public_html/.htaccess ==> 이렇게 만들면 되는지요...
>--------------------------------------
>php_flag register_globals on
>

네 일단은 이렇게 하는게 맞습니다.

>최근에 보완 때문에...조마조마 합니다.
>
>보완에 대해서 조언 부탁 드립니다.
>
>행복 하세요.

========================================

아주 오래전에(?) 언급된 문제이군요.

PHP 보안 버그라기 보다는 PHP 코딩 습관입니다.
이유는 대부분 $_GET['foo'] 보다는 $foo 이 더 편하기 때문이죠.

register_globals 은

http://foo.com/bar.php?foo=test

와 같은 요청이 있을 경우 foo 변수를 처리하는 일종의 방법입니다.

On 으로 설정되어 있을 경우는 곧바로 $foo 를 사용할 수 있지만
Off 로 설정되어 있으면 $_GET['foo'] 를 사용해야합니다.

따라서 $_GET[] 과 같은 변수를 사용하면,
register_globals 을 On 또는 Off 에 상관없이
작동하도록 코딩되어 있으면 이것에 대해서 크게 신경쓸 필요없습니다.

바꾸어 말하면, 모든 변수는 처음 사용할 경우 반드시 초기화 것이 좋습니다.
즉 변수형을 지정하면 아주 간단합니다.

그런데 PHP 옵션이 4.1 이전(?)에는 대부분 On 으로 설정되어 있어서
$_GET['foo'] 를 그냥 $foo 로 코딩되어 있기 때문에 조금 문제가
생길수 있습니다.

예를들어 인증이 필요한 경우에 변수형의 지정이나 변수초기화관련
내용이 없이 곧바로 $foo 에 관한 내용이 나오면
인증에 문제가 생길 수 있다는 겁니다.

조금 더 설명하자면, 어느 페이지(인증)에서 단순히 $sid 값이
있고 없는 것을 체크하여 인증에 이용한다면 간단히 GET 방식으로
인증절차를 거쳐서 원하지 않는 인증이 된다는 것입니다.

예) bar.php
<?php
if($sid)
{
echo "인증 성공";
} else
{
echo "인증 실패";
}
?>

이와 같은 코딩이 되어 있다면 문제가 생깁니다.
이것은 간단히 http://foo.com/bar.php?sid=1 과 같이 URL 을 요청하면
곧바로 인증이 되어 버린다는 겁니다.

따라서 위와 같은 코딩은

예) bar.php
<?php
if($_COOKIE['sid'])
{
echo "인증 성공";
} else
{
echo "인증 실패";
}
?>

또는

예) bar.php
<?php
if($_SESSION['sid'])
{
echo "인증 성공";
} else
{
echo "인증 실패";
}
?>

이와 같이 최소한 $_GET 변수로 인증을 하지 말아야합니다.

...

위의 내용을 정리하겠습니다.
일단은 .htaccess 파일을 만들어 Off 으로 설정하고
홈페이지 운영에 문제가 없다면(인증에 관련된) 다행이지만
문제가 있다면 PHP 코드를 바꾸어야 합니다.

이것이 귀찮다고 생각된다면(보안에 무관심) 그냥 On 으로 설정해놓고
사용해도 됩니다.(다만 보안에 문제가 있음)

좀 이해가 되셨나요?
2003년 12월 16일 00:42:42 화(새벽)  from 61.254.74.228
0
암호: 공용 보안 SSL 서버가 준비되기 전까지는 off 합니다

apache lighttpd linuxchannel.net 
Copyright 1997-2024. linuxchannel.net. All rights reserved.

Page loading: 0.01(server) + (network) + (browser) seconds