Movable Type検索でURL改ざんによるブログ検索をできないようにする方法

Movable Type検索でURL改ざんによるブログ検索をできないようにする方法

Posted at March 19,2014 1:23 AM
Tag:[Customize, MovableType, Search]

Movable Type検索でURL改ざんによるブログ検索をできないようにする方法を紹介します。

1.問題点

Movable Typeの検索機能では、作成したすべてのウェブサイトやブログの検索が可能になります。

特定のウェブサイトやブログを検索対象にしたい場合、検索フォームの「IncludeBlogs」に対象にしたいブログIDを設定します。

たとえば「クラシックブログ」テーマの検索ウィジェットテンプレート(抜粋)には赤色で示す行が書かれていて、これで検索対象のブログを指定します。

<div class="widget-search widget">
  <h3 class="widget-header">検索</h3>
  <div class="widget-content">
    <form method="get" action="<$mt:CGIPath$><$mt:SearchScript$>">
      <input type="text" id="search" class="ti" name="search" value="<$mt:SearchString$>" />
<mt:If name="search_results">
      <input type="hidden" name="IncludeBlogs" value="<$mt:SearchIncludeBlogs$>" />
<mt:Else>
      <input type="hidden" name="IncludeBlogs" value="<$mt:BlogID$>" />
</mt:If>
      <input type="hidden" name="limit" value="<$mt:SearchMaxResults$>" />
      <input type="submit" accesskey="4" value="検索" />
    </form>
  </div>
</div>

このテンプレートで実行されたときのURLを以下のようにIncludeBlogsにはブログID「1」が設定されているものとします。

http://user-domain/mt/mt-search.cgi?search=hoge&IncludeBlogs=1&limit=20

これとは別にプライベートブログなど、検索対象外にしたいブログについては、環境変数ExcludeBlogsをmt-config.cgiに設定します。

たとえばブログID「2」「3」を検索対象外にする場合、次の1行をmt-config.cgiに追加しておきます。

ExcludeBlogs 2,3

ただし、このExcludeBlogsの設定だけでは、ブログID「2」「3」が検索結果に含まれる可能性があります。

具体的には、前述の検索用URLのクエリーIncludeBlogsにブログID「2」「3」を手動で加えて、

http://user-domain/mt/mt-search.cgi?search=hoge&IncludeBlogs=1,2,3&limit=20

と改ざんすれば、ブログID「2」「3」の検索結果も出力されてしまいます。

理由は、ExcludeBlogsに設定した値はIncludeBlogsで上書きが可能なためです。

公式ドキュメントにもそのような記載があります。

ExcludeBlogs

2.Movable Typeの検索でブログを追加できないようにする

検索対象外のブログをURLのクエリーに追加しても検索結果に表示されないようにするには、環境変数「SearchNoOverride」をmt-config.cgiに追加します。

具体的には、ExcludeBlogsに加えて次のように設定します。

ExcludeBlogs 2,3
SearchNoOverride IncludeBlogs

これで先のURLを実行されても、ブログID「2」「3」の結果が表示されることはありません。

3.SearchNoOverrideについて

環境変数「SearchNoOverride」は、URLのクエリーによる上書きを禁止するためのものです。

2項の設定は、「IncludeBlogs」についてURLのクエリーによる上書き禁止を意味します。

1項の例ではテンプレートのフォームとして「IncludeBlogs」が存在しますが、

SearchNoOverrideには、カンマ区切りで複数のパラメータを指定することができます。

SearchNoOverride IncludeBlogs,ExcludeBlogs

4.その他

公式ドキュメントを除き、SearchNoOverrideの具体的な使い方についてはネットに情報が存在していません。

動作確認は行ってますが使用方法に誤りがありましたらご容赦ください。

関連記事
トラックバックURL


コメントする
greeting

*必須

*必須(非表示)


ご質問のコメントの回答については、内容あるいは多忙の場合、1週間以上かかる場合があります。また、すべてのご質問にはお答えできない可能性があります。予めご了承ください。

太字イタリックアンダーラインハイパーリンク引用
[サインインしない場合はここにCAPTCHAを表示します]

コメント投稿後にScript Errorや500エラーが表示された場合は、すぐに再送信せず、ブラウザの「戻る」ボタンで一旦エントリーのページに戻り(プレビュー画面で投稿した場合は、投稿内容をマウスコピーしてからエントリーのページに戻り)、ブラウザをリロードして投稿コメントが反映されていることを確認してください。

コメント欄に(X)HTMLタグやMTタグを記述される場合、「<」は「&lt;」、「>」は「&gt;」と入力してください。例えば「<$MTBlogURL$>」は「&lt;$MTBlogURL$&gt;」となります(全て半角文字)