2011-12-03 111 views
9

我正在寫一個主要是ajax驅動的Web應用程序,我正在研究如何保護用戶免受CSRF攻擊。我打算運行用戶登錄的應用程序頁面,以HTTPS模式工作。HTTPS是否可以防止CSRF攻擊?

是否在HTTPS上運行頁面以防止CSRF攻擊?

+1

它CSRF(跨站請求僞造)不CSFR – CodesInChaos

+0

@CodeInChaos:好,感謝編輯 – frenchie

+0

請記住在開始有一點研究](http://en.wikipedia.org/wiki/Cross-site_request_forgery)瞭解導致此漏洞的原因。 – 2011-12-03 21:27:42

回答

16

不,在HTTPS上運行頁面並不能保護它免受CSRF攻擊。瀏覽器和服務器之間的通信被加密的事實與CSRF沒有關係。

我建議閱讀關於preventing CSRF的OWASP指導。

+0

好的,謝謝Oded的回答。 – frenchie

+0

您對保護ajax交易的建議是什麼?表格提交似乎很好的文件,但阿賈克斯更少。 – frenchie

+0

@frenchie - 幾乎適用於表單提交的所有內容都適用於ajax和XSS。 – Oded

2

一般,金科玉律woule是:

永遠不要相信傳入的客戶端請求是合法的。始終保持懷疑態度,並假設該請求可能被惡意僞造。

很少有超越提到OWASP文章的具體規則:

  1. 如果您的數據需要認證/授權,避免在服務器上的通用接口,如CRUD接口。易於編碼,難以授權來自客戶的特定請求。而是提供一個SOA風格的接口,並提供專門用於特定用例的顯式方法,您可以直接控制請求及其參數。

    http://msdn.microsoft.com/en-us/library/ms954638.aspx

  2. 即使框架提供了對請求有效性(ASP.NET視圖狀態)的一些控制,再次檢查是否該用戶被授權通過所述一組傳入參數。

+0

視圖狀態?我的請求將轉到$ .ajax頁面,因此我無法將視圖狀態的數據用於回發。 – frenchie

+0

這只是一個具體驗證機制的例子。 –