2016-09-16 20 views
3

我們目前有一個問題,即在動作中引發異常時,某些異步控制器操作的ajax請求掛起。什麼是Sitecore.Security.AntiCsrf可以在我的內容傳送服務器上禁用它

通過時,你可以看到以下信息

<REQUEST REQUEST.NAME="c500100080026ded" Url="/url" Verb="GET" Stage="SendResponse" Module="SitecoreAntiCSRF" Time="1602531" SITE.ID="2" WP.NAME="14268" APPPOOL.NAME="AppPool" />

當前正在執行的請求查看有必要對內容分發服務器模塊?我可以完全刪除它嗎?如果我這樣做會有什麼影響?

Sitecore的所述的版本:8更新-5-

+1

AntiCSRF ... CSRF支持跨站點請求僞造...所以AntiCSRF是一種防止跨站點請求僞造的模塊...如果您決定刪除模塊,則會產生影響,mmmm,基本上讓您的應用程序容易受到這些類型的攻擊:) – Hackerman

+0

好吧。我不認爲它像那樣黑白。我們使用mvc控制器並在所有的httppost路由上使用'ValidateAntiForgeryToken'屬性。那麼sitecore模塊在頂部添加了什麼。它主要需要管理界面嗎? – marto

+0

想知道你在做什麼不同,我們使用了相當多的web API,我從來沒有看過這個。 – ASura

回答

2

該模塊旨在保護WebForms免受CSRF攻擊。 默認情況下,它被配置爲僅保護Sitecore接口(Sitecore shell)。但是,它支持配置並可以啓用以保護前端解決方案。

由於Sitecore shell站點在Content Delivery服務器上處於禁用狀態,因此可以安全地禁用或完全刪除模塊而不會產生任何影響。 如果您在Content Delivery服務器上啓用了Sitecore後端,則可以將該模塊配置爲跳過處理對某些特定位置的請求。只需將一個節點添加到Sitecore.AntiCsrf.config文件並指定要過濾的網址即可。

+0

謝謝!我們也得到了來自Sitecore支持的相同迴應。 – marto

1

的AntiCSRF模塊驗證對錶單字段值一個cookie值(GUID)。如果您的API調用不包含這兩個,那麼該模塊將引發錯誤。有趣的是,它的價值實際上並不重要。

模塊本身注入Guid::ToString("D"),但該檢查不會嘗試將其解析回Guid,或者確定它是否是正確的Guid。不知道這是一個反CSRF檢查有多好,但除此之外,唯一的實際要求是請求負載中的表單字段名稱必須與<AntiCsrf />元素的@formFieldName屬性相匹配,並且Cookie名稱必須與@cookieName

您提到您嘗試添加忽略規則 - 這是禁用您的用例功能的適當方式。我會努力做到這一點 - 這很可能是規則制定不當(或者關於規則測試的規則不正確的假設)。以下是正確格式化塊的示例。

<rule name="WFFM"> 
    <urlPrefix>/sitecore/shell</urlPrefix> 
    <ignore wildcard="/sitecore/shell/Applications/Modules/Web Forms for Marketers/Form Reports*\?*Cart_*_Items_Callback=yes"/> 
    <ignore wildcard="/sitecore/shell/~/xaml/Sitecore.Forms.Shell.UI.Dialogs.LookupRecords.aspx*"/> 
    <ignore wildcard="/sitecore/shell/~/xaml/Sitecore.Forms.Shell.UI.Dialogs.ListItemsEditor.aspx*"/> 
</rule> 

請注意,@wildcard規則作爲帶有IgnoreCase的正則表達式執行。您也可以使用@contains。這些值以及<urlPrefix>不應包含方案,而<urlPrefix>對於啓用後續匹配規則而言是必需的,但它本身並不足夠。

你可以做的另一件事是@detectionResult值設置爲RaiseException和你Sitecore的記錄至少設置爲WARN,這樣你可以看到在Sitecore的日誌中提出的錯誤 - 這些可以幫助您確定檢查的一部分那是失敗的。在模塊中的實際日誌記錄並不好,所以你不會從DEBUG日誌中獲得很多好處。

+0

我玩忽略規則,並確保路線被忽略。但問題仍然存在?必須有別的東西。你對伐木是正確的。這並不好。 – marto

相關問題