==버전호환성작업======================================================
  63 if(version_compare(phpversion(), '4.1.0') == -1)
  64  {
  65  $_POST   = &$HTTP_POST_VARS;
  66  $_GET    = &$HTTP_GET_VARS;
  67  $_SERVER = &$HTTP_SERVER_VARS;
  68  }
  69 if (@get_magic_quotes_gpc())
  70  {
  71  foreach ($_POST as $k=>$v)
  72   {
  73   $_POST[$k] = stripslashes($v);
  74   }
  75  foreach ($_SERVER as $k=>$v)
  76   {
  77   $_SERVER[$k] = stripslashes($v);
  78   }
  79  }
====================================================================
대상 웹애플리케이션의 버전이 php4.1.0버전보다 낮으면 구버전과 신버전의 php 슈퍼전역변수를 매칭시킨다.
이는 버전상의 호환성을 위한 작업이다.
참고:http://php.filearena.net/manual/kr/language.variables.predefined.php

magic_quotes_gpc옵션을 확인한다.
옵션이 on이라면,
post로 받은 모든값에 stripslashes를 적용하여 magic_quotes_gpc를 무력화한다.
마찬가지로 서버변수에 stripslashes를 적용하여 magic_quotes_gpc를 무력화한다.
참고:http://php.mirror.camelnetwork.com/manual/kr/control-structures.foreach.php
참고:http://php.filearena.net/manual/kr/reserved.variables.php#reserved.variables.server
--------------------------------------------------------------------
사용함수
mixed version_compare  ( string $version1  , string $version2  [, string $operator  ] )
버전비교
첫번째인자가 두번째부다 낮으면 -1, 같으면 0 높으면 1을 리턴

string phpversion  ([ string $extension  ] )
php버전체크

int get_magic_quotes_gpc  ( void  )
php.ini의 magic_quotes_gpc세팅을 리턴한다.
옵션이 off이면 0을 리턴, on이면 1을 리턴
magic_quotes_gpc옵션은 GET,POST,COOKIE로 넘어온 ' " \ null값의 앞에 \를 붙여서 에러발생 및 sql인젝션을 방지한다.
이를 수동으로 처리하려면 addslashes()와 stripslashes()함수를 사용해야한다.

string stripslashes  ( string $str  )
quote기호 삭제

==웹쉘 사용자 인증=====================================================
  81 if($auth == 1) {
  82 if (!isset($_SERVER['PHP_AUTH_USER']) || $_SERVER['PHP_AUTH_USER']!==$name || $_SERVER['PHP_AUTH_PW']!==$pass)
  83    {
  84    header('WWW-Authenticate: Basic realm="r57shell"');
  85    header('HTTP/1.0 401 Unauthorized');
  86    exit("<b><a href=http://rst.void.ru>r57shell</a> : Access Denied</b>");
  87    }
  88 }
====================================================================
$auth가 1일때,
  PHP_AUTH_USER변수가 설정되어있지 않거나 PHP_AUTH_USER값이 $name과 다르거나 PHP_AUTH_PW값이 $pass와 다르면 사용을 불허하는 기능이다.
--------------------------------------------------------------------
PHP_AUTH_USER
HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 유저에 의해 제공되는 username으로 설정된다.
PHP_AUTH_PW
HTTP 인증을 사용하는 모듈로서 아파치에서 수행될때, 이 변수는 유저가 제공하는 password로 설정된다.
참고:http://php.filearena.net/manual/kr/reserved.variables.php#reserved.variables.server

to be continue
2009/08/27 11:15 2009/08/27 11:15

Trackback Address :: 이 글에는 트랙백을 보낼 수 없습니다