최근에 보안 필터링 입력이 없는 시스템을 작성했습니다. 분석 후 system/core
utf8.php, security.php에 세 개의 파일이 필요합니다. .php
는 하나의 파일로 통합할 수 있지만 세 개의 파일을 사용하는 것이 더 번거롭기 때문에 문제가 발생하지 않습니다.
다음과 같이 사용:
//보안 입력 클래스 인스턴스화
$UNI = new utf8();
$SEC = new security();
$input = new input();
그럼 $username = $input->post('username') 형식입니다.
물론 $cookiepath, $cookieprefix, $cookiedomain, $cookiesecure 등과 같은 일부 구성 변수를 수정해야 합니다.
그러나 $this라는 핵심 구성도 있습니다. ->_enable_csrf= FALSE; 이 변수는 var $_enable_csrf= FALSE에 해당합니다. 기본값은 false입니다. URL 값 쌍 뒤에 _csrf_token_name 키가 있습니다. 이는 아래 코드에서 확인되기 때문입니다.
에는 _csrf_cookie_name의 쿠키 값도 있어야 합니다.
참고:
CI 2.0에는 csrf(Cross Site Request Forgery) 보호 기능이 있습니다
이 기능을 켜면 서버에 양식을 게시하면 오류 500이 발생합니다
오류가 발생했습니다
요청한 작업은 허용되지 않습니다.
실행되지 않습니다
이때 토큰 값은 다음과 같아야 합니다.
폼 기능을 정상적으로 사용하기 위해서는
application/config/config.php에서 다음과 같은 내용을 확인하실 수 있습니다
1
1 2 3 4 |
|
4
$config
[
'csrf_protection'
] = TRUE ;
$config
[
'csrf_token_name'
] =
'csrf_test_name'
;
$config
[
'csrf_cookie_name '
] =
'csrf_cookie_name'
;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
$config
[
'csrf_expire '
] = 7200;
$(
함수
(){
$(
'#btn').click(
함수
(){
code><code>$.ajax({
🎜>
,url:'/ajax'
//Ajax 수신의 서버측
,data :$(
'#form'
).serialize()+
'&csrf_test_name='
+
getCookie(
'csrf_test_name'
)
,성공:
함수
(데이터){
alert(data.msg);
}
,dataType:
'json'
});
});
});함수
getCookie(이름){
var
arr = document.cookie.match(
new
RegExp(
"(^| )"
+이름+
"=([^;]*)(;|$)"
));
if
(arr !=
null
)
return
unescape(arr[2])
return
null
;
}
조언이 있으시면 메시지를 남겨주세요~
추천인: http //ericlbarnes.com/ 블로그 /post/codeigniter_csrf_protection_with_ajax