CI 묻고 답하기

제목 csrf 활성화 상태시 jquery 플러그인(filedrop) 이용 문제입니다.
카테고리 CI 2, 3
글쓴이 꽈찌쭈 작성시각 2016/10/06 16:42:22
댓글 : 2 추천 : 0 스크랩 : 0 조회수 : 21340   RSS

php 에서 파일 업로드를 drag & drop을 이용한 개발 로직을

CI에서 구현하려고 합니다.

사용한 플러그인은 

jquery filedrop : http://filedropjs.org/

입니다.

해당 플러그인으로 구현한 view화면에서 upload 로직으로 넘길 시 csrf 관련 에러가 발생합니다.

(csrf = TRUE로 사용중인데 form_open이 아닌 일반폼으로 넘길때 발생하는 에러)

ajax 적용시 사용법을 찾아보니 hidden값을 직접 넣는 소스가 있어서

플러그인이 만든 form 이후에 스크립트를 이용하여

<input type="hidden" id="<?= $this->security->get_csrf_token_name() ?>" name="<?= $this->security->get_csrf_token_name() ?>" value="<?= $this->security->get_csrf_hash() ?>" />

와 같이 소스에 넣었으나 되질 않네요.

csrf를 FALSE로 설정하고 테스트 해보니 정상적으로 동작합니다.

 

config.php

$config['csrf_protection'] = TRUE;

 

js

fd.jQuery();

var options = {
    iframe: {
        url: 'files/upload'
    }
}

$("#dragFile").filedrop(options)
.on('fdsend', function(e, files){
    file.sendTo('files/upload');
})
.on('filedone', function(e, file, xhr){
    DragFileUpload.Append(xhr.responseText);
})
.on('fdiframedone', function(e, xhr){
    DragFileUpload.Append(xhr.responseText);
});

 

 

 다음글 디비에 값을 넣을 때 쌍따음표 처리를 어떻게 하나요? (4)
 이전글 페이지네이션에서 get파라미터 처리가 잘 안됩니다.. (4)

댓글

꽈찌쭈 / 2016/10/06 17:46:26 / 추천 0

계속 찾아보니 CI 3버전에서는

$config['csrf_exclude_uris'] 라는 옵션을 제공하네요

사용중인 버전은 2.x대라 사용할수가 없네요 ㅠㅠ

꽈찌쭈 / 2016/10/06 17:57:35 / 추천 0

@자문자답

특정 경로의 csrf를 off시켜야 할 것 같아서 검색을 해보았습니다.

hook를 이용한 방법 : http://codeigniter-kr.org/bbs/view/tip?idx=13468&lists_style=

core단에 추가시켜 CI 3버전의 $config['csrf_exclude_uris'] 옵션 추가 방법 : http://stackoverflow.com/questions/15842085/set-config-item-csrf-doesnt-work-in-codeigniter 테스트 결과 안됨

config에 추가하는 방법
if (stripos($_SERVER["REQUEST_URI"],'/controllers/method') === FALSE) {
    $config['csrf_protection']  = TRUE;
}else{ 
    $config['csrf_protection']  = FALSE; 
}