강좌게시판

제목 설정 - config.php 2편(마무리)
글쓴이 변종원(웅파) 작성시각 2011/11/01 10:55:21
댓글 : 8 추천 : 0 스크랩 : 0 조회수 : 43012   RSS
11. 로그 부분입니다. ci가 아직 완벽하다고는 할 수가 없는 것이 빈화면만 나오고 아무런 에러를
출력하지 않는 경우가 가끔 나옵니다. (주로 DB관련 에러일 경우)
그럴때는 application/logs 디렉토리의 로그(날짜별로 남음)를 확인하시면 됩니다.
그래도 안나올 경우엔 아파치 에러 로그 확인.
(에러 로그에 답이 있고 질문에 답이 있죠. ^^)
$config['log_threshold'] = 1;
개발하실때는 4번 모든 메세지로 하시고 서비스 시에는 0(로깅 안함)으로 하시면 됩니다.
4로 할 경우 하루에 쌓이는 로그의 양이 상당합니다. 주의하세요.


12. 로그를 다른 곳에 저장할 경우의 경로입니다.
기본경로는 application/logs 입니다.
$config['log_path'] = '';

13. 로그 날짜 형식
$config['log_date_format'] = 'Y-m-d H:i:s';

14. 캐쉬 디렉토리를 옮길 경우 사용
기본 경로는 system/cache 입니다.
$config['cache_path'] = '';

15. Encryption library나 세션 라이브러리에서 암호화를 하는 경우 필요한 암호화키입니다.
넣지않고 암호화를 하게되면 에러가 납니다.
아무 키나 원하는 것을 넣으시면 됩니다.
$config['encryption_key'] = '';

16. 중요한 세션부분입니다.
ci는 세션을 가장한 쿠키입니다. 세션에는 세션아이디와 브라우저정보 등 기본 정보만 있고
실제 데이터는 세션아이디에 연결된 쿠키에 저장이 됩니다.
DB세션을 사용하기 위해 분리한 구조라고 생각됩니다. DB세션은 세션아이디에 해당하는 실제 정보가 DB에 저장되어
보안상 유리합니다.
쿠키로 사용하실 때에는 암호화하여 저장하시는 것을 추천합니다.
//pc에 저장되는 쿠키명
$config['sess_cookie_name']  = 'ci_session';

//세션 만료 시간
$config['sess_expiration']  = 7200;

//TRUE일 경우 브라우저를 닫으면 세션이 종료됩니다.
$config['sess_expire_on_close'] = FALSE;

//쿠키저장시 암호화 여부 (TRUE로 하시기를 추천합니다)
$config['sess_encrypt_cookie'] = FALSE;

//DB세션 사용
$config['sess_use_database'] = TRUE;

//DB세션을 이용할때 테이블명
$config['sess_table_name']  = 'ci_sessions';

//세션 비교시 ip까지 매칭할지. 식별강화
$config['sess_match_ip']  = FALSE;

//세션 비교시 브라우저까지 매칭할지. 식별강화
$config['sess_match_useragent'] = FALSE;

//세션 업데이트 주기. 5분에 한번씩 갱신합니다.
$config['sess_time_to_update'] = 300;

17. 저는 주로 기본값 그대로 사용하는 쿠키관련입니다.
cookie_domain의 경우 ".aaa.com" 으로 설정하면(도메인 앞의 콤마 주의) a.aaa.com www.aaa.com 모두 동일 도메인으로
인식합니다.
$config['cookie_prefix'] = "";
$config['cookie_domain'] = "";
$config['cookie_path']  = "/";
$config['cookie_secure'] = FALSE;

18. 아주 중요한 보안부분인데 기본이 false로 되어 있어서 간과하는 부분입니다.
TRUE로 설정하시면 사이트상에서 오가는 모든 get, post 및 쿠키까지 xss 필터링을 합니다.
(단점도 있습니다. 에디터를 사용하여 데이터를 넘길때 <p style="..."> 같은 것을 용납을 못합니다.
<p>로 필터링해서 넘깁니다. ckeditor의 페이지 브레이크 기능이 저런 태그를 사용하는데
필터링 시켜서 적용이 안됩니다.)
$config['global_xss_filtering'] = FALSE;

19.  csrf 공격을 막을 수 있는 설정입니다. csrf의 설명은 http://llove94.blog.me/50114504379 을 참고하세요.
개발중인 사이트인데 TRUE로 바꿔야 겠네요. ^^
$config['csrf_protection'] = FALSE;
$config['csrf_token_name'] = 'csrf_test_name';
$config['csrf_cookie_name'] = 'csrf_cookie_name';
$config['csrf_expire'] = 7200;

20. gzip을 이용한 출력압축입니다.
output을 서버에서 gzip으로 압축하여 전송, 브라우저에서 압축해제후 화면출력이라 속도가 빨라집니다만
모든 브라우저가 압축전송을 지원하는지는 검색을 해봐야할 것 같네요.
차라리 ci의 캐시를 사용하는 것이 나을 것 같네요.
$config['compress_output'] = FALSE;

21. 국내용이 아닌 글로벌사이트 구축시 필요한 옵션입니다. 'gmt'로 선언할 경우 컨버팅 없이 gmt시간을 입력할 수 있습니다.
date helper에 now() 함수가 있습니다. 'gmt'로 선언후 now()함수를 사용하면 gmt 타임스탬프 값을 생성합니다.
자세한 것은 http://codeigniter-kr.org/user_guide/helpers/date_helper.html 참고
$config['time_reference'] = 'local';

22. rewrite시 php의 숏태그를 인식할것이냐 인데 숏태그(<? ?>)를 사용하지 않기 때문에 그냥 기본값으로 씁니다.
$config['rewrite_short_tags'] = FALSE;

23. 프록시 부분인데 통상적으로 사용하는 부분이 아니라서(사실 저도 사용해보지 않았습니다) 패스합니다.
$config['proxy_ips'] = '';


이상으로 2회에 걸쳐서 config.php에 대한 부분을 살펴봤습니다.

어떤 부분은 2시간짜리 강의가 나올 수 있는 부분도 있습니다. (보안 부분)

이런 부분(xss필터링, csrf 등)은 따로 풀어가겠습니다.

다음 편 예고. "남들은 index.php 없애고 잘 쓰는데 난 왜 안돼?"  ;-)

퍼가실 때는 링크로 퍼가시길 부탁드립니다.
무단전제는 금합니다.


 다음글 index.php 죽이기!! (26)
 이전글 설정 - config.php 1편 (6)

댓글

milosz / 2011/11/01 13:18:12 / 추천 0
가려운 부분을 박박 긁어주는 강좌가 나오기 시작했군요!
웅파님 감사합니다 ^^ㅎ 화이팅화이팅~

한대승(불의회상) / 2011/11/01 13:56:08 / 추천 0
mod_rewrite 부분이 나오는 모양이군요.. ^^
기대 만땅입니다.
쌈닭 / 2011/11/02 09:58:42 / 추천 0
감동입니다...
무명의시인2 / 2011/11/03 09:03:20 / 추천 0
정말 잘보고 있습니다^^
탱크 / 2011/11/07 02:53:55 / 추천 0
다음 편이 너무 기대가 되용...
왜 난 index.php가 안되징 ㅠㅠ
tigerbi / 2011/11/25 13:17:17 / 추천 0
쵝오요~!^^
꾸숑 / 2013/01/18 19:58:45 / 추천 0
감사합니다.
config.php에 대한 궁금증이 많이 해소 됐네요..
초코바 / 2014/05/26 23:08:33 / 추천 0
감사합니다 잘봤습니다.