2010-10-27 60 views
0

登錄表單工作正常,但是我提交的任何其他表單(如編輯或創建數據)我檢測到CSRF攻擊檢測到錯誤。我試圖清除symfony和瀏覽器緩存,刪除cookies,嘗試多個瀏覽器和多臺電腦。我每次提交表單時檢測到Symfony CSRF攻擊

這是什麼原因造成的?當我關閉CSRF保護時,它工作正常。

回答

4

我每次過去,那是因爲我忘了渲染隱藏標籤在我的形式得到這個錯誤。不要忘了添加此行:

<?php echo $form->renderHiddenFields() ?> 
2

很難用所提供的信息回答這個問題。以下是兩種可能性:

  • 您確定CSRF令牌實際上正在提交嗎?
  • 處理兩個值的表單是相同的嗎? Symfony中的CSRF令牌由三件事情產生:CSRF祕密(在app.yml中設置),session_id和表單類。這三件事情之一是否在改變?
+2

如果您未呈現隱藏字段,則不會提交CSRF標記。 – 2010-10-28 08:09:15

+0

把我放在改變會話ID的正確的直接... – Xosofox 2016-07-04 12:08:42

0

確保您在您的模板形式包括CSRF標記,並與表單提交它:

<?php echo $form['_csrf_token']->render(); ?> 

我會去上肢體和猜測,登錄表單的作品,因爲你只是使用現成的SfGuard代碼,而在你自己的表單中,你從表單中省略了標籤....?

0

要進行檢查,你應該嘗試運行菲德勒在執行自檢,並檢查有效載荷%5B_csrf_token%5D = {} whateveryourtokenis。