Umbraco神奇地回归到“看起来还有更多工作要做”

时间:2012-12-09 21:42:28

标签: asp.net umbraco

我有一个客户,并且他已经报告了5/6次,该网站已经以某种方式返回到未发布的模式。我们不确定是什么原因造成的,一般情况下,当没有人在网站上工作时就会发生这种情况。他们确实有一些过去的人,可能仍然有恶意的意图使网站失效(所以这也可能是一个问题)。

  1. Umbraco中是否存在任何已知的安全问题,用户可能会恶意取消发布整个网站?

  2. Umbraco有没有可能导致这种情况发生的错误?

  3. Umbraco是否检查数据库中是否有已发布的标志,或者只是在选择显示“还有更多工作要做”消息之前检查是否存在XML文件?

3 个答案:

答案 0 :(得分:3)

您要引用的消息存在于/install/noNodes.aspx文件中。

这表明该网站或至少该网站的主页未发布。这表示某人或进程正在取消发布该网站或主页。首先,我会检查“属性”标签中主页上没有设置“取消发布”日期。

同时检查Umbraco日志以检查是谁取消发布哪些节点以及何时发布。您还可以查看主页的审核历史记录,以查看是谁编辑的。

如果您怀疑有恶意,那么在考虑Umbraco的安全问题之前,您需要确定自己的安全性。您需要考虑更改服务器RDC,SQL的sa和任何Umbraco特定密码的密码。

答案 1 :(得分:2)

如果无法连接到数据库,Umbraco将显示此页面。

在较早版本的Umbraco中,一旦发生这种情况,该网站将保持这种状态,直到它被重新发布 - 这似乎已经修复(我不确定从哪个版本)。如果您遇到这种情况并且升级不是一个选项,那么解决方法是将以下代码放在/config/splashes/noNodes.aspx的顶部:

<script runat="server">    
    protected void Page_Load(object sender, EventArgs e)
    {
        Server.ScriptTimeout = 100000;
        var cacheFile = IOHelper.MapPath("/App_Data/umbraco.config");
        try
        {
            var r = XmlReader.Create(cacheFile, new XmlReaderSettings() { DtdProcessing = DtdProcessing.Ignore });
            var d = new XmlDocument();
            d.Load(r);
            var n = d.SelectSingleNode("//root");
            r.Close();
            if (n.ChildNodes.Count == 0)
            {
                Response.Write("Republishing Site......");
                Response.Flush();
            }
            else
            {
                Response.Write("Site Was Already Published......");
                return;
            }
        }
        catch (Exception ex)
        {
            Response.Write(ex.Message);
            Response.Write("Cache missing, republishing.....");
            Response.Flush();
        }

        Document.RePublishAll();
        library.RefreshContent();

        Response.Write("Completed");
        Response.Flush();

        Response.Redirect("/");

        Response.End();
    }
</script>

(这段代码原本不是我的 - 我不记得我从哪里得到它)。代码尝试重新发布该站点,以便一旦数据库连接再次可用,该站点就会重新启动。

您可能还想编辑/config/splashes/noNodes.aspx的内容,以向您的用户显示更合适的网站维护或错误消息。

您是否了解客户网站遭受此类攻击时的任何计划数据库维护?如果没有,您可能需要查看他们的托管。

答案 2 :(得分:1)

我会回应Digbyswift所说的一切,此外,网站页面实际上在后台显示为未发布?如果它们似乎仍然被发布(即它们不是灰色的)但它们没有显示在前端,那么有人可能已在属性选项卡中设置了未发布日期。如果它是灰色的,那么有人可以通过后台办公室实际取消发布它。

如果它显示为已发布,但前端没有任何内容,那么cmsContentXml表也可能出现问题。发生这种情况时,请检查此表中是否有记录。如果没有,该站点将认为它是空的,因为站点XML缓存从站点启动时从此表重建。如果表是空的,则某人或某物正在清除它不应该是。

如果您怀疑是恶意用户,请重置系统的所有密码(后台用户,AND数据库),并确保有权访问CMS的每个人都有自己的用户名和密码(并确保他们不知道每个用户和密码)其他的详细信息),这样您就可以使用审计跟踪将更改固定到特定用户。