Heim >Backend-Entwicklung >PHP-Tutorial >Verwendung der Eingabeklasse von Codeigniter

Verwendung der Eingabeklasse von Codeigniter

WBOY
WBOYOriginal
2016-08-08 09:29:581018Durchsuche

Ich habe kürzlich ein System ohne Sicherheitsfiltereingabe geschrieben. Nach der Analyse sind drei Dateien unter system/core

utf8.php, security.php erforderlich .php

kann in eine Datei integriert werden, ist aber aufwändiger. Es ist besser, drei Dateien zu verwenden, was Ärger erspart.

So verwendet:

//Instanziieren Sie die Sicherheitseingabeklasse
$UNI = new utf8();
$SEC = new security();
$input = new input();

Dann hat es die Form $username = $input->post('username').

Natürlich müssen einige Konfigurationsvariablen geändert werden, wie z. B. $cookiepath, $cookieprefix, $cookiedomain, $cookiesecure usw.;

Aber es gibt auch eine Schlüsselkonfiguration, $this ->_enable_csrf= FALSE; Diese Variable entspricht var $_enable_csrf= FALSE; Wenn Sie sie auf TRUE setzen, wird

hinzugefügt _csrf_token_name-Schlüssel nach dem URL-Wertpaar, da dies im folgenden Code überprüft wird


erfordert, dass auch ein Cookie-Wert von _csrf_cookie_name vorhanden sein muss.

Referenz:

Es gibt eine CSRF-Schutzfunktion (Cross Site Request Forgery) in CI 2.0

Wenn diese Funktion aktiviert ist
Beim Senden des Formulars an den Server wird Fehler 500 ausgegeben
Es ist ein Fehler aufgetreten
Die von Ihnen angeforderte Aktion ist nicht zulässig.
Sie wird nicht ausgeführt
Zu diesem Zeitpunkt muss ein Tokenwert vorliegen zum vom Formular gesendeten Wert hinzugefügt
Um die Formularfunktion normal zu verwenden

Sie finden die folgenden Zeilen in application/config/config.php

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;

12


3

4

$config['csrf_protection'] = TRUE ;

$config['csrf_token_name'] = 'csrf_test_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_cookie_name '] = 'csrf_cookie_name';$config['csrf_expire '] = 7200; Original $config ['csrf_protection'] Der Standardwert ist FALSE, um es zu aktivieren. Nach dem Aktivieren wird automatisch ein Wert im Cookie für Sie gespeichert. Der Name des Cookies kann im festgelegt werden config.php oben erwähnt Danach müssen Sie beim Senden des Formulars dieses Token zusammen senden Das Folgende ist eine Demonstration der Verwendung der Ajax-Funktion von jquery 123 456 7891011 12131415161718 $(function(){ $('#btn').click(function(){ code><code>$.ajax({                                                                                                         🎜><code> ,url:'/ajax'//Serverseite des Ajax-Empfangs ,data :$('#form').serialize()+'&csrf_test_name=' + getCookie('csrf_test_name')     ,success: Funktion(data){ alert(data.msg); } ,dataType:'json' }); });});functiongetCookie(name){ vararr = document.cookie.match(newRegExp("(^| )"+name+"=([^;]*)(;|$)")); if(arr != null) returnunescape(arr[2]); returnnull;}

getCookie() verwendet js, um den Wert des Cookies zu erhalten
Dieser ist im Internet zu finden und kann direkt verwendet werden

Der csrf_test_name kann in config.php festgelegt werden Legen Sie die angegebenen Parameter fest
Fangen Sie dieses Cookie ab und senden Sie es an das Formular
Es kann normal verwendet werden

Wenn Sie Ratschläge haben, hinterlassen Sie bitte eine Nachricht~

Verweis: http ://ericlbarnes.com/ blog /post/codeigniter_csrf_protection_with_ajax


Das Obige stellt die Eingabeklasse mit Codeigniter vor, einschließlich der relevanten Inhalte. Ich hoffe, dass es für Freunde hilfreich ist, die sich für PHP-Tutorials interessieren.

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn