4

我有一个客户,他报告了 5/6 次,该网站以某种方式返回到未发布模式。我们不确定是什么原因造成的,通常会在根本没有人在网站上工作时发生。他们确实有一些人过去曾有过并且可能仍然有恶意关闭网站的意图(因此这也可能是一个问题)。

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

  2. Umbraco 中是否有任何错误可能导致这种情况发生?

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

4

3 回答 3

3

您所指的消息存在于 /install/noNodes.aspx 文件中。

这将表明该站点或至少该站点的主页未发布。这将表明某人或某个进程正在取消发布该站点或主页。首先,我会检查主页上的“属性”选项卡中是否没有设置“取消发布”日期。

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

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

于 2012-12-10T21:04:23.200 回答
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>

(This code wasn't originally mine - I can't remember where I got it from). The code attempts to republish the site so that as soon as the database connection becomes available again the site comes back up.

You may also want to edit the content of /config/splashes/noNodes.aspx to show your users a site maintenance or error message which is more appropriate.

Are you aware of any planned database maintenance around the time your client's site suffered from this? If not, you may need to take a look at their hosting.

于 2013-02-06T13:25:15.620 回答
1

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

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

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

于 2012-12-11T10:05:38.937 回答