2014-10-07 45 views
2

我發現requireSSL="true"房產在無擔保服務器(無SSL) web.config代碼行在UAT - <httpCookies httpOnlyCookies="true" requireSSL="true" lockItem="true" />如何解決CSRF和[在加密會話(SSL)Cookie中缺少安全屬性]問題與requireSSL =「true」?

對於CSRF(跨站請求僞造)修復,我們使用:

var requestCookie = Request.Cookies[AntiXsrfTokenKey]; 

我們不能讀取不安全服務器的安全cookie。因此,對於不安全的服務器,requireSSL屬性在web.config中應該爲false。

如果我們製作requireSSL="false" CSRF修復工作正常,但所有的cookie變得不安全,併產生其他問題[Missing Secure Attribute in Encrypted Session (SSL) Cookie]

我們還附加了CSRF修復代碼,其中功能PreventCSRF()OnInit(EventArgs e)事件調用Default.aspx.cs頁面中。

在本地我們沒有SSL,requireSSL="false"與CSRF修復正常工作,但不是[Missing Secure Attribute in Encrypted Session (SSL) Cookie]。所以修復CSRF和[Missing Secure Attribute in Encrypted Session (SSL) Cookie]問題都依賴於對方。

有2個查詢 -

  1. 如UAT,SSL在負載均衡的水平管理,IIS盒沒有安裝在他們的SSL證書。我們可以使用Request.Cookies[AntiXsrfTokenKey]讀取安全cookie嗎?

  2. 如果我們做的是requireSSL="false",那麼CSRF修復工作正常,但所有cookie變得不安全意味着所有的cookie都會持續存在[Missing Secure Attribute in Encrypted Session (SSL) Cookie]問題。

回答

0

這可能不是一個回答你的問題,但這裏是我們可以試試,

要從CSRF令牌獲得最大的收益,你可以用Request.Headers通過。 使用Header傳輸令牌是我認爲安全的做法。

Default.aspx的OnInit很好,但是如果你有任何httpmodule,你可以嘗試AcquireRequestState()方法並獲取HttpContext.Current.Request.Headers [「CSRFToken」]並在會話中保留該令牌的一個副本驗證(可能你有一些其他邏輯來驗證)