この記事の内容は、時間経過およびプログラムやシステムのバージョン アップなどの事情によって、現状に正しくそぐわない内容、またはそれどころか、場合によっては問題を引き起こす可能性があります。参考程度に留め、関連記事やアーカイブを検索してみてください。
ブログの特徴の一つとして、Web 上のコンテンツと URL を一意に対応付ける パーマリンク(Permalink)の存在を挙げることができます。 この恩恵にあずかって、自分の書いた記事の中で言及したブログ記事やサイトにディープリンクを貼るブロガーも多いことでしょう。 ブログを知っている人にしてみれば、これらリンクはブログの醍醐味とも言うべき極めて自然なことのようですが、 その一方で、世の中には無断リンク禁止や下層コンテンツへのディープリンク禁止を掲げるサイトも少なくありません。 書いたコンテンツを Web に公開したいと思うものの、 URL の悪質な晒し上げなどからコンテンツを保護したいという(言わば我侭な)ニーズは確かにあるようです。
そこで今回、MovableType でディープリンク防止機構を実現するためプラグインを作成してみました。 MovableType でパーマリンクを捨てることの意味があるのか、いささか疑問ではありますが、 まぁシステム上実現できるに越したことはありません。 それを如何に使うか、それはユーザ次第ということで…
これらエントリを基点として、rir6システムや モヒカン族といった興味深い単語に出会えます(笑)
このプラグインの導入により、個別エントリへのパーマリンク URL は、ユーザ毎エントリ毎に異なったものになります。 その URL は一人のユーザ専用となり、そのユーザ以外のアクセスを検知することが可能になります。 その URL にアクセスするには、サイトトップのインデックスなど規定のページを経由し、 認証用 Cookie の発行を受ける必要があります。 これにより、不特定多数が Cookie の発行を受けない特定のエントリへのディープリンクを直接辿ることをできなくします。 ディープリンクを拒否する具体的な仕組み(コード)については いしなお!:人によってパーマリンクが異なるシステム 実装例 を参照してください。ユーザ A のためのパーマリンクの例:
(1) http://www.magicvox.net/archive/2005/08091234.php?4f5e6d3c
(2) http://www.magicvox.net/archive/2005/08012468.php?fe603876
ユーザ B のためのパーマリンクの例:
(3) http://www.magicvox.net/archive/2005/08091234.php?3360ff6c
<MTEntries> <a href="<$MTEntryPermalink$><$MTDeepLinkBlockerHash$>"><$MTEntryTitle$></a><br /> </MTEntries>
MTUseDeepLinkBlocker
と
MTDeepLinkBlockerHash
です。
<MTUseDeepLinkBlocker authorize="1"> <!-- このページで認証用 Cookie が発行されます --> <!-- MTUseDeepLinkBlocker は必ずページの先頭に置いてください --> <body> <MTEntries> <!--個別記事へのパーマリンクに続けて認証用ハッシュを追加します--> <a href="<$MTEntryPermalink$><$MTDeepLinkBlockerHash$>"><$MTEntryTitle$></a><br /> </MTEntries> </body>
MTDeepLinkDenied
とMTDeepLinkProtected
です。
<MTUseDeepLinkBlocker> <!-- MTUseDeepLinkBlocker を忘れずに置いてください --> <body> <MTDeepLinkDenied> このページを直接表示することはできません。 インデックスページから辿ってください。 </MTDeepLinkDenied> <MTDeepLinkProtected> ここにディープリンクから保護されたコンテンツを記述します。 認証済みのユーザは、Cookie が有効な間のみ直接にリンクを辿ることができます。 </MTDeepLinkProtected> </body>
作ってはみたものの、今のところ自分のサイトで使う予定も無く(´・ω・`)
master
) ... バグ修正や機能追加など開発途中のバージョンです。開発中の新機能などをいち早く利用できますが、新しいバグが生まれていたり、テストが不十分な場合があります。
寄せられたコメント (全 2 件中、最新 5 件まで表示しています)
プラグインで拡張したテンプレートタグでやっていることのほとんどは
PHPスクリプトを書き出すことだけなんですね。
実際の処理は、書き出されたPHPが頑張ってくれています。
…と、これを書いていて思ったんですが。
例えば、アクセスカウンタのPHPスクリプトを書き出すプラグインを作って
<MTEmbeddedCounter type="normal" figure="6">
みたいな書式で、ブログに埋め込めるようにしてやるんです。
PHP製の様々なパーツをプラグインというパッケージにして
簡単に配布、導入することができるんでないか、と。