4

私にはクライアントがいて、彼は5/6回、ウェブサイトがどういうわけか非公開モードに戻ったと報告しています. 何が原因なのかはわかりませんが、一般的には誰も Web サイトで作業していないときに発生します。彼らには、過去にサイトをダウンさせることに関して悪意を持っている可能性のある人が何人かいます (したがって、これも問題になる可能性があります)。

  1. Umbraco には、ユーザーが悪意を持って Web サイト全体を非公開にすることができる既知のセキュリティ上の問題はありますか?

  2. Umbraco にこれを引き起こす可能性のあるバグはありますか?

  3. Umbraco は Database for published フラグをチェックしますか?それとも、"There is more work to do" メッセージを表示することを選択する前に 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>

(このコードはもともと私のものではありませんでした。どこから入手したか思い出せません)。このコードは、データベース接続が再び利用可能になるとすぐにサイトが復旧するように、サイトの再公開を試みます。

/config/splashes/noNodes.aspx のコンテンツを編集して、より適切なサイト メンテナンスまたはエラー メッセージをユーザーに表示することもできます。

クライアントのサイトがこれに苦しんでいた頃に計画されたデータベースのメンテナンスを知っていますか? そうでない場合は、ホスティングを確認する必要があるかもしれません.

于 2013-02-06T13:25:15.620 に答える
1

Digbyswift が言ったことすべてを繰り返しますが、さらに、サイト ページは実際にバック オフィスで非公開として表示されますか? それらがまだ公開されているように見える (つまり、グレー表示されていない) が、フロント エンドに表示されない場合は、誰かが [プロパティ] タブで非公開日を設定した可能性があります。グレー表示されている場合は、おそらくバック オフィスを通じて、誰かが物理的に非公開にしたものです)。

公開済みとして表示されているが、フロント エンドに何も表示されていない場合は、cmsContentXml テーブルで問題が発生している可能性もあります。このような場合は、このテーブルにレコードがあることを確認してください。存在しない場合、サイト XML キャッシュはサイトの起動時にこのテーブルから再構築されるため、サイトは空であると見なします。テーブルが空の場合、誰かまたは何かが空であってはならないテーブルを空にしています。

悪意のあるユーザーの疑いがある場合は、システム (バック オフィス ユーザーとデータベース) のすべてのパスワードをリセットし、CMS にアクセスできるすべてのユーザーが独自のユーザー名とパスワードを持っていることを確認します (また、お互いの詳細を知らないことを確認します)。 、そうすれば、監査証跡を使用して特定のユーザーに変更を固定することができます。

于 2012-12-11T10:05:38.937 に答える