我正在建立一个网页,提供有关用户网站的统计信息 您输入您的网址并获得一堆结果。
我的主要关注点是建立在Sitecore cms上的网站
目前,只有在'/sitecore/login'
页面可用时,我才能检测到该站点是否使用Sitecore。
为此,我使用:
var webclient = new WebClient();
var source = webclient.DownloadString(url);
但是当管理员决定提高安全性时,他们可以让随机用户无法访问'sitecore/login'
。
在这种情况下,我的代码显然不起作用。
有谁知道如何检测是否使用Sitecore cms的更好解决方案? 请记住,它是一个外部网站,因此无法访问sitecore后端。
(p.s。我不想使用第三方工具)
提前致谢!
答案 0 :(得分:10)
总会有一种方法来屏蔽Sitecore正在使用中。话虽如此;你可以看到一些东西 - 根据我的经验,Sitecore管理员和开发人员很少改变默认设置。
<强>缓存强>
SC_ANALYTICS_GLOBAL_COOKIE
SC_ANALYTICS_SESSION_COOKIE
如果您的请求向您发送了这些cookie中的任何一个,我会谨慎地假设它是Sitecore解决方案。
请求已知媒体
请求此文件仅适用于Sitecore。但只适用于Sitecore版本7及更高版本。
/~/media/System/Template%20Thumbnails/audio.ashx
或
/~/media/System/Simulator%20Backgrounds/blackberry.ashx
(最后一个也适用于Sitecore 6.6)
或
/layouts/System/VisitorIdentification.aspx
这些都不能保证有效。但是,如果你对其中任何一个产生“打击”,如果它不是幕后的Sitecore解决方案,那将是一个奇怪的巧合。
答案 1 :(得分:5)
常见的一种方法是检查.ashx
是否用于媒体扩展,或者它们的前缀是/~/media/
或/-/media/
,但所有这些显然都会根据配置进行更改设置。这也需要您检查源代码。
您可以检查其他Sitecore文件,但根据部署情况,这些文件可能会或可能不会在那里或至少可供公众访问。我会查找/sitecore
文件夹之外的文件,例如:
您需要检查文件的内容以确保它们是默认的Sitecore文件。您依赖于这些文件将从默认安装中遗留下来这一事实,但无法保证因此可能无法告诉您。
答案 2 :(得分:5)
令人惊讶的是,Sitecore有一个公共(默认情况下)可访问的版本文件。它位于/sitecore/shell/sitecore.version.xml
我注意到/经历过这个文件经常被访问,即使/sitecore
受到保护。
能够访问此文件不仅可以确认该站点是在Sitecore上构建的,还可以为您提供所用版本的特定版本。
答案 3 :(得分:1)
大多数人都没有意识到您还可以通过在域之后指定已知项目的完整路径来访问站点根目录之外的Sitecore项目。例如,我们可以尝试使用以下URL访问/ sitecore / content项目:
https://www.somedomain.com/sitecore/content
这有时会重定向到找不到布局的页面。这并不总是有效,因为/ sitecore URL上的保护。所以另一种方法是使用sc_itemId和/ sitecore / content的ID:
https://www.somedomain.com?sc_itemid= {0DE95AE4-41AB-4D01-9EB0-67441B7C2450}
这将返回找不到布局页面或404页面。两者都表明这是Sitecore网站。