728x90
안녕하세요. 은은한 개발자입니다.
코드이그나이터(Codeigniter) 에서 보안을 위해 CSRF 토큰을 사용하다가 아래와 같은 에러를 경험하셨다면 잘 들어오셨습니다.
1.Forbidden
2.error
3.Forbidden
4.403
An Error Was Encountered
The action you have requested is not allowed.
위와 같은 상황은 form 전송시 'post'를 사용할 경우에 해당합니다.
1. FORM 전송시
<input type="hidden" id="csrf_token" name="<?= $this->security->get_csrf_token_name() ?>" value="<?= $this->security->get_csrf_hash() ?>">
위 코드를 <form></form> 태그 안에 넣으면 끝!
2. AJAX 전송시
- HTML
<meta name="_csrf" content="<?= $this->security->get_csrf_hash() ?>">
<meta name="_csrf_header" content="<?= $this->security->get_csrf_token_name() ?>">
- Javascript
var header = $("meta[name='_csrf_header']").attr("content");
var token = $("meta[name='_csrf']").attr("content");
var formData[header] = token;
$.ajax({
url: '',
type: "POST",
data: formData,
dataType: "json",
success: function (res) {
...
},
error: function (xhr, status, errorThrown) {
console.log("1." + errorThrown + "\n2." + status + "\n3." + xhr.statusText + '\n4.' + xhr.status);
}
});
먼저 <head></head> 태그 사이에 meta 태그로 추가했습니다.
그리고 javascript에서 추가한 meta 태그의 content 속성값을 불러와 formData를 만들어 Ajax로 데이터를 전송하는 방법을 사용했습니다.
더 좋은 방법 있으시면 공유 부탁드립니다.
728x90
'Develop > PHP' 카테고리의 다른 글
PHP 특정 디렉토리 하위 파일 목록 가져오는 방법 (0) | 2020.02.27 |
---|---|
PHP 날짜 차이 일수 얻는 방법 (0) | 2020.02.27 |
PHP 코드이그나이터 CSRF 토큰 사용법 (0) | 2020.02.27 |
PHP timezone 설정방법 date(): It is not safe to rely on the system's timezone settin (0) | 2020.02.26 |
PHP 짧은 태그 설정 short_open_tag (0) | 2020.02.26 |
댓글