2017-04-11 59 views
0

我有一個使用antiforgerytoken的應用程序來保護所有表單。該應用程序駐留在一個網站上,該網站的http綁定設置爲8080,並將https設置爲443(默認的https端口)。到現在爲止,我確信,所有的請求都是通過HTTPS建立了(在MVC應用程序是使用所需的HTTPS過濾,Web配置有餅乾進入requiressl設置爲true,owin有權威性的cookie也設置爲HTTPS)。ASPNET MVC 5:防僞cookie不存在

最近,我們不得不改變事情,因爲現在我們有一個防火牆來處理https請求。它將始終通過https向最終客戶端提供響應,但我更改了我的應用程序,以便可以通過http調用它。

我已經從配置中刪除了所需的https過濾器,cookie所需的ssl,並更改了owin auth cookie設置,並且認爲一切都會好的。不幸的是,這並沒有發生,我已經開始在驗證期間獲得反僞造令牌cookie缺失異常。現在,事情是,如果我使用HTTPS,一切都會解決,但如果我改變爲HTTP(這是在端口8080),它會中斷。

我已經結束了從全局asax內更改防僞配置設置,但我無法找到以前的問題的一個很好的解釋。換句話說,爲什麼https訪問工作沒有任何問題,但http訪問最終拋出一個異常,說它找不到防僞cookie ......

有什麼想法嗎?

感謝, 路易斯

回答

2

比沒有更可能的是,你使用(與Secure標籤發送的cookie)安全cookie。這些只會在HTTPS連接上生存下來。一旦SSL被丟棄,任何安全的cookie也會被刪除。您可以將其關閉,但實際上你的用戶打開了一個攻擊向量,讓他們的餅乾在純文本通過協議交換被暴露。

你可以做的最好的事情就是保持它的安全。僅僅因爲SSL由防火牆提供,並不意味着您無法在您的網站上實施SSL。唯一的區別是你需要一個自簽名的證書,因爲顯然這個外部域不適用。除此之外,在內部代理安全的站點應該沒有問題,而不是不安全的站點。

+0

您好克里斯。我可以做到這一點。 但要注意的是,雖然接收通過防火牆的請求我所描述的行爲不會發生。從我的應用程序中刪除以前的設置後,只有通過https才能訪問機器時發生這種情況。所以,我已經結束了一個應用程序,應通過HTTP或HTTPS工作,但與我所提到的防僞造錯誤而失敗,每當我試圖通過HTTP訪問它(不知道爲什麼,但如果我使用名稱localhost而不是AD機器名稱,我不會收到錯誤)。 –

+0

@克里斯普拉特提醒我要改變SSL和現在在本地主機的工作就像我所料,請參見:

相關問題