2017-02-16 91 views
0

我正在嘗試解決此問題。消息:檢測到CSRF攻擊

我有兩個cdn網址abc.com指向elb1和def.com指向elb2。

兩個ELB(elb1和elb2)指向該負載平衡相同EC2實例(EC2-A和EC2-B)

我可以登錄到服務器,其從abc.com 但我導航無法登錄到從def.com導航的服務器

def.com登錄提供以下錯誤。

由於兩個DNS指向相同的EC2。 Web.config文件是相同的。

Message: CSRF attack detected. 

Exception type: CMS.Protection.Web.UI.CsrfException 
Stack trace: 
at CMS.Protection.Web.UI.CsrfProtection.ThrowCsrfException(Exception innerException) 
at CMS.Protection.Web.UI.CsrfProtection.OnPostMapRequestHandlerExecute(Object sender, EventArgs eventArgs) 
at CMS.Base.AbstractHandler.CallEventHandler[TArgs](EventHandler`1 h, TArgs e) 
at CMS.Base.AbstractHandler.Raise[TArgs](String partName, List`1 list, TArgs e, Boolean important) 
at CMS.Base.SimpleHandler`2.RaiseExecute(TArgs e) 
at CMS.Base.SimpleHandler`2.RaiseExecute(TArgs e) 
at CMS.Base.SimpleHandler`2.StartEvent(TArgs e) 
at System.Web.HttpApplication.SyncEventExecutionStep.System.Web.HttpApplication.IExecutionStep.Execute() 
at System.Web.HttpApplication.ExecuteStep(IExecutionStep step, Boolean& completedSynchronously) 

Message: Error occurred during a cryptographic operation. 

Exception type: System.Security.Cryptography.CryptographicException 
Stack trace: 
at System.Web.Security.Cryptography.HomogenizingCryptoServiceWrapper.HomogenizeErrors(Func`2 func, Byte[] input) 
at CMS.Protection.Web.UI.CsrfProtection.OnPostMapRequestHandlerExecute(Object sender, EventArgs eventArgs) 
+0

它看起來像你從外部網站發送請求 –

+0

似乎機器鍵不匹配。看看這個:https://docs.kentico.com/k10/configuring-kentico/optimizing-website-performance/setting-up-web-farms/configuring-web-farm-servers#Configuringwebfarmservers-配置machineKeyelementinweb.config可以你請指定你正在使用的HF版本? – bayotop

+0

其kentico 10最新版 – SmartestVEGA

回答

-1

Neshi是正確的,你需要確保,該頁面的POST請求來自同一來源,否則你很可能實現跨站腳本的定義。

總體設置非常複雜,但您仍然需要確保CSRF cookie中的安全令牌與加載時由CMSPage生成的令牌相同,並且我不確定這些重定向和載入傳輸是否也能夠這樣做以保持足夠的會話粘性。

一般描述爲: https://docs.kentico.com/k10/securing-websites/developing-secure-websites/cross-site-request-forgery-csrf-xsrf

0

其固定的,我生成機鍵,和把在兩個EC2實例相同的機鍵。因此問題是固定的

2

Kentico中的CSRF保護使用MachineKey.Unprotect()方法驗證令牌,因此所有服務器都必須使用相同的加密密鑰。

有關如何實現此行爲的更多詳細信息,請參閱documentation