2016-09-16 76 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

相关问题