2016-07-22 2 views
0

Ich habe ProblemeCodeIgniter, CSRF-Token

Ansicht

<form method="post" action="test/csrf"> 
<input type="hidden" name="<?=$this->security->get_csrf_token_name();?>" value="<?=$this->security->get_csrf_hash();?>"> 

-Controller

echo $this->input->post($this->security->get_csrf_token_name()); 

ich nicht Token-Code

+0

Wo Sie nicht Token-Code zeigen kann? Ansicht oder Controller? – Poonam

Antwort

1

Zugriff auf die CSRF-Token in der Steuerung zeigen

In Controller kann u Namen und den Wert von csrf erhalten wie folgt

 echo $this->security->get_csrf_token_name(); // for the name 
     echo $this->security->get_csrf_hash(); // for the value  

aktivieren CSRF in Config-Datei

$config['csrf_regenerate'] = TRUE; 
  1. Gebrauchte CSRF-Token Formularhelfer

Wir haben zwei Möglichkeiten, CSRF-Tokens hinzuzufügen; Wenn wir daran denken, Ihr Formular mit der CodeIgniter-Formular-Hilfsklasse zu aktualisieren, werden CSRF-Token automatisch hinzugefügt oder wenn Sie überlegen, es in benutzerdefiniertem Formular anzupassen, müssen wir einen benutzerdefinierten versteckten Eingabenamen und seinen Wert hinzufügen.

Wenn wir Form Hilfsklasse verwenden:

<?php echo form_open(base_url('user/login'), array('id' => 'login', 'class' => 'login'));?> 
     <input type="text" name="username" /> 
     <input type="password" name="password" /> 
     <input type="submit" name="submit" value="Submit" /> 
    <?php echo form_close();?> 

Form Helper-Klasse verwendet, wird automatisch hinzugefügt Eingabe in das Formular eingereicht mit einem zufälligen Tokenwert CSRF zu verhindern.

  1. Wenn wir verwenden, um benutzerdefinierte Form:

Wir brauchen eine Eingabe zu verhindern, dass unsere eigene Form mit CSRF eingereicht hinzuzufügen.

$csrf = array(
    'name' => $this->security->get_csrf_token_name(), 
    'hash' => $this->security->get_csrf_hash() 
    ); 

    <input type="hidden" name="<?=$csrf['name'];?>" value="<?=$csrf['hash'];?>" /> 

Wenn Sie das Formular Helfer verwenden, dann Form_Open() werden automatisch ein verstecktes csrf Feld in Ihren Formularen einfügen. Wenn nicht,

Dann können Sie verwenden get_csrf_token_name() und get_csrf_hash()

http://www.codeigniter.com/user_guide/libraries/security.html

http://www.sks.com.np/secure-your-codeigniter-application-using-csrf-token/

+0

Dies ist mein neuer Testcode und Fehler T_T http://pastebin.com/itBt0cgY –

+0

Wenn Sie Formularhilfe verwenden, gibt es keine Anforderung zum Festlegen eines benutzerdefinierten Tokens. Der Formularhelfer generiert automatisch das Token – pradeep

+0

. Verwenden Sie einfach form_open und form_close das Token wird generiert.Stellen Sie sicher, dass Sie $ config ['csrf_generate'] = TRUE aktiviert haben; und fügen Sie Helfersicherheit hinzu – pradeep