Movable Type検索でURL改ざんによるブログ検索をできないようにする方法
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で上書きが可能なためです。
公式ドキュメントにもそのような記載があります。
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の具体的な使い方についてはネットに情報が存在していません。
動作確認は行ってますが使用方法に誤りがありましたらご容赦ください。
- Movable Typeの検索オプション徹底解説
- Movable Type 5.1の検索で「blog_idパラメータが不正です。」となる不具合の対処
- Movable Type 5.1の検索で検索結果テンプレートを指定する方法
- Movabel Type の検索結果フィードを利用する
- Movable Type検索結果のブログ記事タイトルからアーカイブページへリンクする方法
- Movable Type で複数ブログを検索する
- タグ検索を絞り込む(その2:カスタマイズ)
- タグ検索を絞り込む(その1)
- Movable Type 検索の全角スペースを半角スペースと同じ振る舞いにする(MT4版)
- Movable Type 4.2 検索結果ページのカスタマイズ:ページナビゲーションをプルダウンメニューにする
- Movable Type 4.2 検索結果ページのカスタマイズ:ナビゲーションを検索結果の上下に表示する
- Movable Type 4.2 検索結果ページのカスタマイズ:検索結果が1ページだけのときに「1」という表示をなくす
- Movable Type 4.2 検索結果ページのカスタマイズ:検索結果の見出しに(現在のページ/総ページ数)を表示する
- Movable Type 4.2 検索結果ページのカスタマイズ:1ページに表示する件数を変更する
- システムテンプレートとその他のテンプレートを振り分ける