C# 检测站点是否在sitecore上生成

C# 检测站点是否在sitecore上生成,c#,sitecore,C#,Sitecore,我正在建立一个网页,提供用户网站的统计信息。 您输入您的URL并获得一系列结果 我的主要关注点是基于Sitecore cms构建的网站。 目前,我只能在'/Sitecore/login'页面可用时检测站点是否使用Sitecore 为此,我使用: var webclient = new WebClient(); var source = webclient.DownloadString(url); 但是当管理员决定提高安全性时,他们可能会使随机用户无法访问'sitecore/login'。 在这

我正在建立一个网页,提供用户网站的统计信息。
您输入您的URL并获得一系列结果

我的主要关注点是基于Sitecore cms构建的网站。
目前,我只能在
'/Sitecore/login'
页面可用时检测站点是否使用Sitecore

为此,我使用:

var webclient = new WebClient();
var source = webclient.DownloadString(url);
但是当管理员决定提高安全性时,他们可能会使随机用户无法访问
'sitecore/login'
。 在这种情况下,我的代码显然不起作用

有人知道如何检测是否使用Sitecore cms的更好解决方案吗?
请记住,它是一个外部网站,因此无法访问sitecore后端

(注意,我不想使用第三方工具)


提前谢谢

常见的一种方法是检查
.ashx
是否用于媒体扩展,或者它们的前缀是
/~/media/
/-/media/
,但所有这些显然都会根据配置设置进行更改。这将要求您也检查源代码

您可以检查其他Sitecore文件,但根据部署情况,这些文件可能存在,也可能不存在,或者至少公众可以访问。我会查找
/sitecore
文件夹之外的文件,例如:

  • default.aspx
  • default.css
  • default.js
  • webedit.css

您需要检查文件的内容,以确保它们是默认的Sitecore文件。您所依赖的事实是,这些文件将是默认安装留下的,但无法保证,因此可能无法确定。始终有一种方法可以屏蔽正在使用的Sitecore。话虽如此,;根据我的经验,Sitecore管理员和开发人员很少更改默认设置

Cookies

SC_ANALYTICS_GLOBAL_COOKIE
SC_ANALYTICS_SESSION_COOKIE
如果您的请求向您发送了这些cookie中的任何一个,我敢打赌,假设它是Sitecore解决方案是安全的

请求已知媒体

请求此文件应仅适用于Sitecore。但只适用于Sitecore 7及更高版本

/~/media/System/Template%20Thumbnails/audio.ashx

(最后一个也适用于Sitecore 6.6)


这些都不能保证有效。然而,如果你在这两个方面都获得了“成功”,那么如果它不是幕后的Sitecore解决方案,那将是一个奇怪的巧合。

令人惊讶的是,Sitecore有一个公共(默认)可访问的版本文件。它位于
/sitecore/shell/sitecore.version.xml

我注意到/体验到,即使
/sitecore
受到保护,此文件也经常可以访问


能够访问此文件不仅可以确认站点是在Sitecore上构建的,还可以为您提供所用版本的特定版本。

大多数人没有意识到,您还可以通过在域后的已知项的完整路径中指定来访问站点根目录之外的Sitecore项。例如,我们可以尝试使用以下URL访问/sitecore/content项:

这有时会重定向到“未找到布局”页面。这并不总是有效的,因为对/sitecore URL的保护。因此,另一种方法是使用sc_itemId和/sitecore/content的ID:

{0DE95AE4-41AB-4D01-9EB0-67441B7C2450}


这将返回布局未找到页面或404页面。两者都表明这是一个Sitecore站点。

媒体库通常不起作用,sitecore文件夹之外的文件似乎成功率最高。可以在sitecore.config中跳过此设置并输出真正的文件扩展名,而不是通过.ashx文件提供这些文件扩展名,因此此检查将不会始终有效。@aseabridge我知道这一点,并且我已经提到它们可能会更改,但是有很多实现并没有改变这一点。正如所有Anser给出的一样,这在很大程度上取决于您对Sitecore的了解,以及有多少人锁定了所有指示牌。谢谢您的回复。这必须适用于每个版本,因此媒体本身不是一个选项。探视识别的成功率也有限。另一方面,饼干似乎是一种有趣的方法。事实上,如果将所有选项结合在一起,就必须清楚该站点是否使用sitecore构建。我认为找不到一个通用的解决方案。如前所述,Sitecore可以被屏蔽,HTTP头可以(并且应该被删除)被防火墙屏蔽。这就留下了尝试一些或更多不同事物的唯一选择,如果其中一个结果是肯定的,那么你就成功了。正如马克所说,没有保证的方法来判断一个网站是否建立在Sitecore上。如果Sitecore分析被禁用,Cookie显然不会出现。事实上,这是防御性更强的Sitecore客户很难掩盖的事情,因为向陌生人暴露你不可靠的技术就是一种安全攻击的邀请。嘿,你在为www.builtwith.com工作吗P@HarshBaid哈哈,不是,但我想创造一个类似的东西;)很好,但不应该在许多站点上使用,因为Sitecore加强安全性的XML文件被阻塞和/或Sitecore文件夹已从CD服务器中删除。
/~/media/System/Simulator%20Backgrounds/blackberry.ashx
/layouts/System/VisitorIdentification.aspx