>  기사  >  백엔드 개발  >  codeigniter의 입력 클래스 사용

codeigniter의 입력 클래스 사용

WBOY
WBOY원래의
2016-08-08 09:29:58944검색

최근에 보안 필터링 입력이 없는 시스템을 작성했습니다. 분석 후 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

$config['csrf_protection'] = TRUE;

$config['csrf_token_name'] = 'csrf_test_name';

$config['csrf_cookie_name'] = 'csrf_cookie_name';

$config['csrf_expire'] = 7200;

23


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

$(function(){

    $('#btn').click(function(){

        $.ajax({

            type:'POST'

            ,url:'/ajax'//ajax接收的server端

            ,data:$('#form').serialize()+'&csrf_test_name='+ getCookie('csrf_test_name')

            ,success:function(data){

            alert(data.msg);

            }

            ,dataType:'json'

        });

    });

});

functiongetCookie(name){

    vararr = document.cookie.match(newRegExp("(^| )"+name+"=([^;]*)(;|$)"));

    if(arr != null) returnunescape(arr[2]); returnnull;

}

$config['csrf_expire '] = 7200; 원본 $config ['csrf_protection'] 기본값은 FALSE입니다. 활성화하려면 TRUE로 변경하세요. 활성화하면 자동으로 쿠키에 값이 저장됩니다. 쿠키 ​​이름은 쿠키 이름에서 설정할 수 있습니다. 위에서 언급한 config.php 이후 폼을 보낼 때 이 토큰을 함께 보내줘야 합니다 다음은 jquery의 ajax 기능을 이용한 데모입니다 123 456 7891011 12131415161718 $(함수(){ $('#btn').click(함수(){ code><code>$.ajax({                                                                                          🎜> ,url:'/ajax'//Ajax 수신의 서버측 ,data :$('#form').serialize()+'&csrf_test_name=' + getCookie('csrf_test_name')     ,성공: 함수(데이터){    alert(data.msg); } ,dataType:'json' }); });});함수getCookie(이름){ vararr = document.cookie.match(newRegExp("(^| )"+이름+"=([^;]*)(;|$)")); if(arr != null) returnunescape(arr[2]) returnnull;} 이 쿠키를 잡아서 양식으로 보내세요정상적으로 사용할 수 있습니다


조언이 있으시면 메시지를 남겨주세요~

추천인: http //ericlbarnes.com/ 블로그 /post/codeigniter_csrf_protection_with_ajax

위 내용은 코드이그나이터를 이용한 입력 클래스에 대한 내용을 포함하여 소개하고 있으며, PHP 튜토리얼에 관심이 있는 친구들에게 도움이 되기를 바랍니다.

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.