2011-06-05 106 views
16

最近我發現了CSRF攻擊,並很高興地發現CSRF保護已添加到Codeigniter v 2.0.0。Codeigniter CSRF - 它是如何工作的

我啓用了該功能,並看到帶有令牌的隱藏輸入被添加到窗體中,我假設它也將令牌存儲在會話中。在POST請求中,CI是否會自動比較令牌,還是必須手動執行此操作?

回答

29

僅當使用form_open()函數時,纔會將CSRF標記作爲隱藏輸入添加到窗體中。

具有CSRF標記值的Cookie由Security類創建,並在必要時爲每個請求重新生成。

如果存在$_POST數據,則Cookie由Input類自動驗證。如果發佈的令牌與Cookie的值不匹配,則配置項將顯示錯誤並且無法處理數據$_POST

所以基本上都是自動的 - 你所要做的就是在$config['csrf_protection']中啓用它,並在表單中使用form_open()函數。

一篇好文章,我發現,說明它非常好:https://beheist.com/blog/csrf-protection-in-codeigniter-2-0-a-closer-look.html

+1

謝謝你爲澄清!我很高興我選擇CI作爲我的框架:) – CyberJunkie 2011-06-05 19:50:55

+0

謝謝,但鏈接已經死亡 – 4Jean 2017-01-08 16:50:34

+0

鏈接已更新,感謝4Jean。 – 2017-01-10 21:18:50

1

當CSRF保護這個令牌自動啓用安全類檢查(它POST令牌COOKIE令牌進行比較)

1

請參閱此鏈接 - Used CSRF Tokens using form helper or Manually

的文章解釋瞭如何解決與CSRF令牌

  • 表格形式助手開放功能
  • 在阿賈克斯形式
  • 阿賈克斯/ jQuery的系列化形成

本文還介紹瞭如何「禁用CSRF對某類網址(其用作Web服務的URL)