보안Security
본 페이지에서는 웹 보안에 대한 실용적기법들(best practices) 과 CodeIgniter 의 보안 항목에 관한 상세 설명을 제공합니다.
URI 보안
CodeIgniter 는 악의있는 데이터가 프로그램으로 전달되는것을 방지하기 위하여 URI 에 쓰는 문자를 상당히 제한하기 있습니다.URL 은 아래 사항들만 포함해야 합니다:
- Alpha-numeric text(알파벳과 숫자)
- Tilde: ~
- Period: .
- Colon: :
- Underscore(밑줄): _
- Dash: -
GET, POST, 및 COOKIE 데이터
CodeIgniter 는 기본적으로 세그먼트 기반의 URI 를 사용하므로 GET data 는 허용되지않습니다.(만약 여러분이 config 파일에서 쿼리스트링(query string) 옵션을 활성화 해 놓았다면 허용됩니다 ).글로벌 GET 배열은 시스템 초기화 과정에서 해제( unset )됩니다.
Register_globals
시스템 초기화과정에서 모든 글로벌 변수(global variables)들은 해제( unset ) 됩니다 .단 , $_POST 및 $_COOKIE 배열은 예외입니다.해제 루틴은 register_globals = off 와 동일한 동작을 합니다.
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)하기
이스케이프 없이 데이터 베이스에 입력하지 마시기 바랍니다. 더자세한 정보는 데이터베이스 의 쿼리 항목을 살펴보세요 .