2012-10-06 39 views
4

只要瞭解CodeIgniter 2.x具有內置的CSRF保護。現在閱讀文檔後,我沒有發現與CSRF相關的任何內容,只需在config.php文件中將其設置爲TRUE即可。但是,在我的系統中,我不使用自動合併CodeIgniter的CSRF保護的form_helper,而是使用HTML的本機<form>在CodeIgniter中啓用CSRF爲TRUE

我的擔心是我需要做什麼來實現CodeIgniter的CSRF,或者只是將選項設置爲TRUE就足夠了?

+0

任何想法或文章分擔那個阿米戈? –

+0

Codeigniter帶有源代碼。你只需要閱讀它,你已經在你的磁盤上。 – hakre

+0

當然,我可以閱讀來源。然而,我並沒有提前理解CodeIgniter的CSRF爲什麼會被破壞。我很想了解更多。也許要引導。 –

回答

2

要啓用笨CRSF所有你需要做的是:

  1. 在配置文件中設置選項 「TRUE」

  2. 所有窗體MUST使用form_open() helper function。這會自動生成並在表單中包含一個「隱藏的」CSRF標記。 Codeigniter會自動檢查每個表單提交中的這個標記,作爲安全功能的一部分。如果它檢測到CSRF錯誤,它將自動拋出401錯誤。

你不需要做任何事情。

編輯:我只是重新讀你沒有使用form_open()。您可以自己手動將CSRF令牌插入到表單中 - 但這會比所需的更多工作。只需將所有表單轉換爲使用form_open - 並且它將毫無用處地工作。

(是的 - 這是在CI少數不良記錄的功能之一 - 讓我明白爲什麼你不可能找到答案 - 我花了一段時間爲好)

+0

謝謝你,如果它確實返回401,我該如何管理?會顯示一個401頁面嗎? –