Heim >Backend-Entwicklung >PHP-Tutorial >Verwendung der Eingabeklasse von Codeigniter
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 |
|
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 |
|
$config
[
'csrf_cookie_name '
] =
'csrf_cookie_name'
;
$config
[
'csrf_expire '
] = 7200;
$(
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'
});
});
});function
getCookie(name){
var
arr = document.cookie.match(
new
RegExp(
"(^| )"
+name+
"=([^;]*)(;|$)"
));
if
(arr !=
null
)
return
unescape(arr[2]);
return
null
;
}
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.