2012-10-28 121 views
2

我有一個具有表單的靜態網站。表單提交給一個Rails端點來捕獲提交的數據。靜態站點和Rails端點位於同一個域上,不同的子域上,所有流量都完全位於HTTPS上。靜態頁面上的CSRF保護

我明白Rails CSRF如何爲服務器生成的表單工作。但就我而言,這些表單位於靜態HTML頁面上。我明白所有的請求頭文件都可以僞造,所以不能依賴於此。

如果在這種情況下不可能有強大的解決方案,那麼我的最後一個選擇是轉移到服務器生成的表單(我現在要避免的)。

任何有關此方法的建議都會受到歡迎。或者任何指向已經這樣做的系統或庫的指針。

感謝

回答

1

我建議你閱讀CSRF prevention cheat sheet

有兩種可以使用的靜態方法。

1)使用JavaScript獲取標記並重寫靜態HTML頁面以包含現時。

2)Check the Referer and Origin headers

+0

在第2>是沒可能欺騙的HTTPS POST請求的REFERER頭 - 使它不太安全? –

+0

CSRF作弊小抄表示:雖然在自己的瀏覽器中欺騙引用標題是微不足道的,但在CSRF攻擊中這是不可能的。 - 我不太明白這一點。 –

+0

@Akshay Rawat CSRF的重點在於你在受害者瀏覽器的範圍內僞造了一個請求。引用者,來源和其他標題永遠不會被修改。使用Flash可以更改一些標題,但Referer和Origin始終是禁用的。 – rook