보안Security
본 페이지에서는 웹 보안에 대한 실용적기법들(best practices) 과 CodeIgniter 의 보안 항목에 관한 상세 설명을 제공합니다.
URI 보안
CodeIgniter 는 악의있는 데이터가 프로그램으로 전달되는것을 방지하기 위하여 URI 에 쓰는 문자를 상당히 제한하기 있습니다.URL 은 아래 사항들만 포함해야 합니다:
- Alpha-numeric text(알파벳과 숫자)
- Tilde: ~
- Period: .
- Colon: :
- Underscore(밑줄): _
- Dash: -
Register_globals
시스템 초기화과정에서 모든 글로벌 변수(global variables)들은 해제( unset ) 됩니다 .단 , $_GET,$_POST 및 $_COOKIE 배열은 예외입니다.해제 루틴은 register_globals = off 와 동일한 동작을 합니다.
오류보고
실제 서비스에서는 PHP의 에러표시기능을 꺼두는것이 좋습니다(internal error_reporting 플레그를 0 으로). 그렇게 하므로써 민감한 정보가 포함될 수있는 PHP 에러가 사용자에게 보이지 않도록 합니다.
index.php에 포함된 CodeIgniter 상수 ENVIRONMENT 값을 ' production '으로 설정하면 오류메세지는 표시되지않습니다.개발 모드에서는 ' development '를 사용하는 것을 추천합니다 .환경별 처리 에서 환경별로 달리 처리할 수 있는 사항들을 확인하세요.
magic_quotes_runtime
magic_quotes_runtime지시자는 시스템 초기화과정에서 off 되므로 데이터베이스에서 데이터를 조회할때 슬래쉬를 제거할 필요가 없습니다..
실용적 기법들 Best Practices
서버로 부터 전달된데이터(사용자가 입력한 POST 데이터, COOKIE 데이터, URI 데이터, XML-RPC 데이터, SERVER 배열에 있는데이터 등)들을 처리하기전에 아래의 3단계를 거치는것이 좋습니다.
- 오염된 데이터를 필터합니다
- 올바른 타입,크기,길이 등의 사항들을 검증합니다. (이 단계가 1번단계를 대신할때도 있습니다.)
- 데이터베이스에 입력하기 전에 이스케이프(Escape) 합니다.
CodeIgniter 는 이러한 단계를 지원하기 위하여 다음 함수들을 지원합니다:
-
XSS 필터링
CodeIgniter 는 크로스 사이트 스크립팅(Cross Site Scripting) 필터를 제공합니다. 이 필터는 악의적인 자바스크립트를 데이터에 포함하는것이라든지, 쿠키등을 가로채려는것을 찾아냅니다. XSS 필터는 여기 에 상세한 설명이 있습니다.
-
데이터 검증
CodeIgniter는 검증,필터링,데이터 준비를 위해서 폼검증 클래스 를 제공합니다.
-
데이터베이스 입력 전에 이스케이프(Escape)하기
이스케이프 없이 데이터 베이스에 입력하지 마시기 바랍니다. 더자세한 정보는 데이터베이스 의 쿼리 항목을 살펴보세요 .