ディープリンク防止機構を実現する MovableType プラグイン:MTDeepLinkBLocker

Posted by
ぴろり
Posted at
2005/08/09 18:30
Trackbacks
関連記事 (1)
Comments
コメント (2)
Post Comment
コメントできます
Category
プラグイン カテゴリ
 の特徴の一つとして、 上のコンテンツと URL を一意に対応付ける パーマ(Permalink)の存在を挙げることができます。 この恩恵にあずかって、自分の書いた記事の中で言及した記事やサイトにディープを貼るブロガーも多いことでしょう。 を知っている人にしてみれば、これらの醍醐味とも言うべき極めて自然なことのようですが、 その一方で、世の中には無断禁止や下層コンテンツへのディープ禁止を掲げるサイトも少なくありません。 書いたコンテンツを に公開したいと思うものの、 URL の悪質な晒し上げなどからコンテンツを保護したいという(言わば我侭な)ニーズは確かにあるようです。

 そこで今回、 でディープ防止機構を実現するためを作成してみました。 でパーマを捨てることの意味があるのか、いささか疑問ではありますが、 まぁシステム上実現できるに越したことはありません。 それを如何に使うか、それはユーザ次第ということで…

この記事をはてなブックマークに追加する この記事のはてなブックマーク数 | この記事をlivedoorクリップに追加する この記事のlivedoorクリップ数 | この記事をYahooブックマークに追加する この記事のYahoo!ブックマーク数 | この記事をdel.icio.usに追加する

はじめに

 ARTIFACT ―人工事実― : 自分が想定していないリンクを拒否するシステム/コメント欄の高機能化 では、無断やディープに関する様々なサイトでの考察やソリューションが数多く集められています。 この記事が今回のの作成の大きな動機となった訳ですが、 無断やディープ問題を考える上で、非常に有用なとして活用できました。 ここでは、ディープ、直禁止のためのソリューションとして Cookie を使用した一例が紹介されていますが、 ARTIFACT から辿り付いた いしなお!:人によってパーマリンクが異なるシステム 実装例では、 Cookie と を利用してユーザ毎にパーマが異なる のサンプルコードを公開されています。 今回、作成したは、こちらの スクリプトを参考にしています。

これらエントリを基点として、rir6システムモヒカン族といった興味深い単語に出会えます(笑)

 このの導入により、個別エントリへのパーマ URL は、ユーザ毎エントリ毎に異なったものになります。 その URL は一人のユーザ専用となり、そのユーザ以外のアクセスを検知することが可能になります。 その URL にアクセスするには、サイトトップのインデックスなど規定のページを経由し、 認証用 Cookie の発行を受ける必要があります。 これにより、不特定多数が Cookie の発行を受けない特定のエントリへのディープを直接辿ることをできなくします。 ディープを拒否する具体的な仕組み(コード)については いしなお!:人によってパーマリンクが異なるシステム 実装例 を参照してください。

仕様と制限

 は、正確には、 のシステムでディープを拒否するのではなく、 ディープを拒否するための スクリプトを、 から簡単に埋め込めるようにしてあります。 これにより スクリプトを直接書く手間を省き、コードの見通しを良くします。 実際にディープを拒否するのは がその役割を担いますので、サーバで が動作する必要があります
  • 同じエントリであっても、ユーザ毎にパーマが異なります【下記 URL(1),(3)】
  • 同じユーザであっても、エントリ毎にハッシュ値が異なります【下記 URL(1),(2)】
  • Cookie の認証を受けていないユーザは URL(1),(2),(3) に直接アクセスできません
  • 既に Cookie の認証を受けたユーザ A は、などから URL(1),(2) に直接アクセスすることができます
  • 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

追加されるタグ

MTUseDeepLinkBlocker
ディープ防止機構を使用するページの先頭に必要です。 このタグはディープ防止機構に必要な スクリプトを書き出します。
authorize
authorize が 1 の時、そのページは認証用 Cookie を発行します。 引数に authorize を持つ MTUseDeepLinkBlocker タグが記述されたページからされた時のみ、 ディープ防止機構を持つページを表示することができます。
thru
thru が 1 の時、そのページはディープ防止機構が動作しません。 MTDeepLinkDenied は常に偽となり、MTDeepLinkProtected は常に真となります。 このオプションの具体的な活用事例は 特定カテゴリの記事へのディープリンクを防止する MTDeepLinkBlocker 0.11を参照してください。
MTDeepLinkBlockerHash
ユーザの認証用 Cookie とエントリID から、認証に必要なハッシュを生成します。 パーマの後にこのハッシュを続けます。
MTDeepLinkDenied
認証が済んでいないリクエスト時に真となるコンテナタグです。 逆条件は lse ではなく、後述の MTDeepLinkProtected を使ってください。
MTDeepLinkProtected
認証済みのリクエスト時に真となるコンテナタグです。 逆条件は lse ではなく、前述の MTDeepLinkDenied を使ってください。

導入方法

Step 0.のインストール

 ダウンロードし、 アーカイブに含まれるMTDeepLinkBlocker.plディレクトリにコピーします。 そして、 の管理画面のメインメニューで、"使用可能な"欄に表示されていることを確認します。

Step 1.インデックスページのを修正

 インデックスページからを辿った場合のみ、個別エントリを表示する一例を紹介します。 認証を受けていないユーザは、必ずこのページからを辿る必要があります。 この作業で重要なタグは MTUseDeepLinkBlockerMTDeepLinkBlockerHashです。

Step 1.個別エントリへのディープを禁止する

 個別エントリアーカイブにディープされた場合、異なるコンテンツを表示する一例を紹介します。 一度、認証を受けたユーザは、Cookie が有効な間のみ、ディープを直接辿ることができます。 この作業で重要なタグは MTDeepLinkDeniedMTDeepLinkProtectedです。

トラブルシュート - 動かない時は?

 この項目は作成中です。

いろいろ

  • スクリプトにより 1 ページにつきファイルサイズが約1KB増加します
  • オリジナルの著作権表示を改変しない限り、自由に改造・転載・配布できます

作ってはみたものの、今のところ自分のサイトで使う予定も無く(´・ω・`)

/ MD5バージョン日付サイズ(Bytes)動作環境備考
MTDeepLinkBlocker
GetMD5Hash('MTDeepLinkBlocker011.zip');?>
0.11 new '05/08/19 GetFileSize('MTDeepLinkBlocker011.zip');?> 3.151-ja で動作確認

最新版のやバグレポートはDeepLinkBlocker の trac レポジトリでも行っています。


この記事を読んだ人はこんな記事も読んでいます ?

その他の関連する記事


関連記事/トラックバック (全 1 件中、最新 5 件まで表示しています)

Open MagicVox のスクリーンショット
タイトル
特定カテゴリの記事へのディープリンクを防止する MTDeepLinkBlocker 0.11
Trackbacked at
2005/08/19 23:59
from
Open MagicVox
評価
Web Scouter
概要
 先日公開しました MTDeepLinkBlocker をバージョンアップしまし...

この記事にトラックバックを送るには?

寄せられたコメント (全 2 件中、最新 5 件まで表示しています)

Posted by
ぴろり
at
2005/11/17 16:03
ID
y6MbTuC2

動作を確認できるようサンプルページを"はじめに"の節に設置しました。

Posted by
ぴろり
at
2005/08/09 20:34
ID
UsIuUa5c

MTDeepLinkBlockerのソースを見ると明らかですが、
プラグインで拡張したテンプレートタグでやっていることのほとんどは
PHPスクリプトを書き出すことだけなんですね。
実際の処理は、書き出されたPHPが頑張ってくれています。

…と、これを書いていて思ったんですが。
例えば、アクセスカウンタのPHPスクリプトを書き出すプラグインを作って
<MTEmbeddedCounter type="normal" figure="6">
みたいな書式で、ブログに埋め込めるようにしてやるんです。
PHP製の様々なパーツをプラグインというパッケージにして
簡単に配布、導入することができるんでないか、と。

コメントを投稿する

 (必須/公開)
 (必須/非公開)
 

コメントスパム防止のため投稿前に ランダムな数字 ? を入力してから投稿してください。 お手数ですがご協力のほど宜しくお願いいたします。(必須)