« googleとYouTube | トップページ | »

無断リンクを排除する

例によって夜中に目が冴えてしまったのでなんかして遊ぶ.

引用:
あなたが泣こうがわめこうが、技術的に排除しない限り無断リンクはなされるのだから。

「あちら側」と「こちら側」のルールメイキング

というわけで,技術的に排除してみた.

      1 #!/usr/bin/fridge
      2 #usage : http://HostName?PageName
      3 hostName="127.0.0.1"
      4 htmlPath="./"
      5
      6 echo ,Content-Type: text/html
      7 echo ,\n
      8
      9 pread "echo $HTTP_REFERER" fromLink
     10 if (match fromLink "^http://"+hostName)<0 toPage="index.html"
     11 else  pread "echo $QUERY_STRING" toPage
     12 pread "cat "+htmlPath+toPage htmlText
     13 echo htmlText
     14 return 0
     15

ポリシーは「TOP以外にリンク貼らせない」.
コツはhtmlファイルをサーバのドキュメントルート以下のディレクトリ以外の場所におくようにすること.
CGIを通してしかhtmlファイルにアクセスすることができず,同一ホスト以外からのリンクから飛んできた人は全部TOPページに飛ぶ.

しかしプログラマはいいけども,そうじゃない人に「技術的に排除しろ」っていうのもなかなか無茶な話だと思う.(そもそも技術的に排除できる人は自分のサイトで無断リンクお断りとかあんま言い出さないよな)

ということは,オプションで「無断リンク強制排除」とかって機能をつけたホスティングサービスやBlogなんかのWEBツールが出たら金になるのかもしれない.

#追記-------------(2006/10/17 14:00)
コメント欄で指摘をうけたように,このままのスクリプトだと$HTTP_REFERERを偽装されただけで外からホスト内のファイルがまる見えになってしまうので,実際の運用では指定したディレクトリ以下のファイルしか閲覧できないように「../」などの危険な文字列を除去する処理等が必要になると思います.

« googleとYouTube | トップページ | »

コメント

これはそのままだとまずいですね。
#ホスト内のファイルがすべて見放題

本当だ.これじゃ$HTTP_REFERERをちょこっと偽装するだけでも全部まる見えになっちゃいますね.ご指摘ありがとうございます.

コメントを書く

コメントは記事投稿者が公開するまで表示されません。

(ウェブ上には掲載しません)

トラックバック

この記事のトラックバックURL:
http://app.f.cocolog-nifty.com/t/trackback/163977/3833531

この記事へのトラックバック一覧です: 無断リンクを排除する:

« googleとYouTube | トップページ | »