2009년 5월 14일 목요일

php.ini 보안설정


기본
1. allow_url_fopen
On --> Off

2. magic_quotes_gpc
Off --> On

3. register_globals
On --> Off

1.
php 에서 오류 발생시 디렉토리 경로의 내용을 좌악 보여주면 이 정보를 악용할 소지가 있습니다.
php.ini 에서 display_errors를 Off 로 하면됩니다 (기본값은 On 입니다.)

display_errors=Off

2.
phpinfo() 함수는 시스템내의 php,http,mysql 과 관련한 모든 정보를 보여 줍니다.
따라서 운용시 막아두는 것이 좋습니다. phpinfo() 스크립트를 금지 시키는 옵션 입니다.

disable_functions = phpinfo()

3.
php 내에서 스크립트 함수를 ( exec() ) 모두 막을수 있지만, 불편함을 초래 할수 있습니다. 이경우 실행될 디렉토리를 지정해 주고 이 내에있는 것만 실행 하도록 하면 됩니다.

safe_mode = On  ( 디폴트는 Off 입니다. )
safe_mode_exec_dir=/usr/local/bin   ( 지정할 디렉토리 디폴트는 없습니다. )


#. 외부 파일 불러오기 방지
  ; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
  allow_url_fopen=off  로 설정


#. 특수문자 필터링설정
   ; Magic quotes for incoming GET/POST/Cookie data.
   ; GET 방식으로 입력되는 ".."는 일반적으로 필터링 하도록 설계되고 있다.
   ; 쉘에서는 ".\./"는 ".." 과 동일하게 간주된다.
   ; 이에 특수문자에 대한 전체적인 제한이 필요하다.
   magic_quotes_gpc = On


#. 위험한 함수 사용방지
   ; This directive allows you to disable certain functions for security reasons.
   ; It receives a comma-delimited list of function names. This directive is
   ; *NOT* affected by whether Safe Mode is turned On or Off.
   disable_functions =


#. 안전한 세션관리
   ; Argument passed to save_handler.  In the case of files, this is the path
   ; where data files are stored. Note: Windows users have to change this
   ; variable in order to use PHP's session functions.
   ; As of PHP 4.0.1, you can define the path as:
   ;     session.save_path = "N;/path"
   ; where N is an integer.  Instead of storing all the session files in
   ; /path, what this will do is use subdirectories N-levels deep, and
   ; store the session data in those directories.  This is useful if you
   ; or your OS have problems with lots of files in one directory, and is
   ; a more efficient layout for servers that handle lots of sessions.
   ; NOTE 1: PHP will not create this directory structure automatically.
   ;         You can use the script in the ext/session dir for that purpose.
   ; NOTE 2: See the section on garbage collection below if you choose to
   ;         use subdirectories for session storage
   ; 이 부분을 /tmp/session처럼 디렉토리를 따로 만들고
   ; session.save_path = /tmp/session 디렉토리를
   ; chown nobody.nobody /tmp/session
   ; chmod 750 /tmp/session  이렇게 해주시면 됩니다.
   session.save_path = /tmp


#. 에러처리
   ; 만일 PHP나 연결된 데이터베이스, 외부 프로그램 등의 에러메시지가 임의의 사용자가 볼수 있도록
   ; 화면에 나타난다면, 이것은 시스템의 정보를 노출하기 때문에 공격의 수단으로 될수 있다.
   ; 이에 에러메시지를 보여주기 보다는 서버의 에러 로그로 남기도록 설정을 바꿔주어야 한다.
   ;---------------------------------------------------------------------------------
   ; Log errors into a log file (server-specific log, stderr, or error_log (below))
   ; As stated above, you're strongly advised to use error logging in place of
   ; error displaying on production web sites.
   log_errors = Off
   ; Trace mode. When trace_mode is active (=On), warnings for table/index scans and
   ; SQL-Erros will be displayed.
   mysql.trace_mode = Off 

댓글 없음:

댓글 쓰기