簡體   English   中英

為Codeiginter頁面創建Facebook Canvas應用時的CSRF設置問題

[英]CSRF Setting issues when creating Facebook Canvas App for a Codeiginter Page

我有一個Codeigniter應用程序,可以正常工作。 我創建了一個Facebook canvas應用,並嘗試加載由codeigniter生成的頁面。 沒用 我看到的是可怕的-“不允許您要求的操作”。 為了確保我的facebook應用程序設置正確,我嘗試了另一個站點的頁面,並且該頁面正常工作。

因此開始搜索可能的問題,我發現這是因為cornfig設置中的CSRF protection = TRUE。 因此,我只是關閉了CSRF保護,以查看是否可行。 然后,它起作用了,我實際上可以通過Facebook Canvas App加載codeigniter生成的頁面(不過是沙盒模式。)

有人建議,如果我們對csrf令牌的隱藏字段進行硬編碼(而不是依賴於form_open()函數),則可以避免使用此規則,並且按照這種邏輯,如果我們有一個完全沒有形式的頁面,則應該可以正常工作。 而且我什至無法加載沒有表單的頁面。

而且我不在任何地方使用AJAX。

我正在使用CI 2.1.3。

一個相關鏈接-http://ellislab.com/forums/viewthread/228160/#1038448盡管Stackoverflow和其他論壇上有很多類似的問題,但我找不到令人滿意的答案。

如果僅看到Apache日志,我真的不覺得關閉CSRF保護是個好主意。

那么,如何在不關閉CSRF保護的情況下使Codeignter生成的頁面出現在facebook canvas應用中?

任何指針都是有用的。 謝謝您的時間。

此問題的根本原因是Facebook如何調用應用程序頁面iframe。 Facebook默認在$ _POST數組中向帖子發送一個參數(signed_request)。 但是,當Codeigniter檢查CSRF保護時,則在后數組中找不到csrf令牌。

因此,顯然沒有針對此的直接解決方案。 我們可以在system\\core\\Security.php中的csrf_verify函數中更改條件,以便不驗證何時有$ _POST ['signed_request']值,但是我知道這不是一個好主意。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM