2012-11-14 22 views
15

Sitemde CSRF koruması etkin, ancak CSRF belirtecinin gizli bir alana yerleştirildiği tek zaman, form_close() kullanıldı. Veriyi ajax yoluyla gönderiyorum ve 500 hataları önlemek için CSRF'yi de göndermem gerekiyor.Bir form olmadan Codeigniter CSRF belirteci mi alıyorsunuz?

CSRF belirtecini sayfaya açıkça yerleştirmenin bir yolu olduğunu düşündüm, ancak bulamıyorum.

Sayfada bir form olmadığında CSRF belirtecini nasıl edinebilirim?

+0

[Ajax form + CSRF başarısız bir istekle sonuçlanır] (http://ellislab.com/forums/viewthread/230264/#1042793) –

+0

Sam yanlış olarak, sayfada $ this-> security- belirtin. > get_csrf_hash(); ve sonra sadece _TOKEN değerini, örn. data: { _TOKEN: $ ('input [name = "_ TOKEN"]'). val()}, –

cevap

39

Güvenlik sınıfının aracılığı CSRF belirteç adını ve değerini elde edebilirsiniz:

$this->security->get_csrf_hash(); 
$this->security->get_csrf_token_name(); 
+4

Weird, belgelerde bulamadı, ama tam olarak aradığım şey buydu. teşekkürler – Motive

+2

Teşekkürler .. nasıl onaylayacağımı bana bildirebilirsiniz. – nilesh

11

forma bu şekilde Burada

<input type="hidden" name="<?php echo $this->security->get_csrf_token_name(); ?>" value="<?php echo $this->security->get_csrf_hash(); ?>"> 
0

bunu ekle CSRF etkinleştirme gösteren bir örnektir Saldırı modu:

<script> 
 
    
 
    var cct = '<?php echo $this->security->get_csrf_hash() ?>'; 
 
    var get_csrf_token_name = '<?php echo $this->security->get_csrf_token_name() ?>'; 
 
    
 
    $.ajaxSetup({ 
 
    type:'post', 
 
    data:{ <?php echo $this->security->get_csrf_token_name() ?> :cct} 
 
    }); 
 
    
 
    
 
    var siteurl = '<?= site_url()?>';   
 
     
 
    </script>

İlgili konular