2013年5月28日

コメントスパム対策

仕事が忙しくて更新サボっていましたが、5月の中旬からコメントスパムが届くようになりました。

コメントが投稿されると携帯にメールが来るようにしていたので、直ぐにコメントスパムが投稿されているのは気が付いていたのですが、さすがに無駄なコメントをチマチマ削除するのが大変になってきたのでコメントスパムの対策を行うことにしました。

今までもコメント欄にはCAPTCHA 認証を使っていたので、コンピュータからの機械的なコメントの投稿は出来ないようにしていたのですが、Movable Type の脆弱性が発見されたのか、どうやらCAPTCHA 認証をすり抜けてコメントを投稿して来ているようです。

対策ですが、Movable Typeでコメントを投稿するには、「 mt-comments.cgi 」を呼び出しているのですが、これをリネームすることでディフォルト値のcgiを機械的に攻撃してくるスパムを防ぐすることが出来るようです。

変更する箇所は、「 mt-config.cgi 」で、以下の内容を追加します。今回はコメントとついでにトラックバックも対応しました。

 
CommentScript mt-comments-samle.cgi
TrackbackScript mt-tb-samle.cgi
 

続いて、ファイル名も以下のようにリネームします。

mt-comments.cgi -> mt-comments-samle.cgi
mt-tb.cgi -> mt-tb-samle.cgi

あとは、サイトの再構築をすれば完了です。今回のコメントスパムに有効かは微妙ですが、しばらく様子見です。

 

2012年4月18日

npcでアクセスカウンター

いままで、UNFINISHED(アンフィニッシュト)の無料アクセスカウンターを使っていましたが、利用規約に違反したことにされ、いきなりプロジェクトが削除されました。ようするに、カウンターが使えなくなったわけです。
Amazonのアフェリートツールとか外部のAPIを頼っていると、知らない間に使えなくなる事があるので、アクセスカウンターも自前で持つことにしました。

このブログで使っているコンテンツ管理システム(CMS)のMovableTypeのプラグインでは、仕組み上、リアルタイムのカウンター更新が難しいようなので、ページが読み込まれる際にAPIを叩いてカウンターを表示させます。
FreeBSDのportsでインストール出来ればと探していたら、npcカウンターを見つけましたので、早速インストールしました。

npc.cgiのインストール

今回は、portでインストールします。

# cd /usr/ports/www/npc
# make install

インストールした際にできるCGI本体は、/usr/local/www/cgi-bin/npc.cgiに、コンフィグのサンプルは、/usr/ports/www/npc/work/npc-0.83/conf/sample2.idxに作成されます。コンフィグのサンプルは sample1.idx も作成されていますが、古いのでsample2.idxを使用します。

設定ファイルの修正

設定ファイルのディフォルトの保存先は /usr/local/etc/npc/npc.idx になります。カウンターを実効する際に設定ファイルを指定することも出来ますが、ここでは設定ファイルをディフォルトの保存先に置いています。
まず、以下がサンプルコンフィグです。

# cat sample2.idx
#!npc.cgi -- ファイル先頭行の「#!npc.cgi」で npc.cgi の設定ファイルか
# どうかを見分けています。

; npc.cgi v0.82 以降は設定ファイルの制御構文が構造化され、
; 条件分岐が視覚的にも分かりやすくかけるようになりましたので
; なるべく構造化文(=IF)を使って書くようにした方が良いでしょう。
 
; また、従来の記法では表現できなかった環境変数やオプションの値を
; 使っての条件分岐も可能になっています。
 
###
# 最初の部分は sample1.idx と同じ条件を構造化文を使って書いています。
#
 
=WIDTH
5
=PROGRESS
OFF
=INCREMENT
1
 
=IF=REFERER
  ^$
  =INCREMENT
  0
  =RESTRICTION
  1
=ELSIF=REFERER
  ^http://nocount@www2\.biglobe\.ne\.jp/
  =RESTRICTION
  0
  =INCREMENT
  0
=ELSIF=REFERER
  ^http://www2\.biglobe\.ne\.jp/
  ^http://www2\.meshnet\.or\.jp/
  =RESTRICTION
  0
  =IF=BROWSER
    ^Mozilla/[1-9]
    =PROGRESS
    ON
    =DELAY
    1000,50
  =ENDIF
  =IF=ADDR
    127.0.0.1
    =INCREMENT
    0
  =ELSIF=HOST
    ^meshse[0-9]*\.mesh\.ad\.jp$
    ^host\.domain\.com$
    =INCREMENT
    0
  =ENDIF
=ELSE
  =RESTRICTION
  2
=ENDIF
 
###
# オプションでモード=1が設定されている場合は、リロードしても
# カウントアップしないようにしています。
#
 
=IF=OPT=MODE
  1
  =IF=ENV=HTTP_PRAGMA
    no-cache
    =INCREMENT
    0
  =ENDIF
=ENDIF
 
=COUNTER
0000000007 test
0000000001 http://www.your.site/your/page/index.html
0000000001 ftp://ftp.your.site/pub/down/conter.gz
 

設定ファイルをコピーして所有者や権限を修正しています。所有者は、各自の環境に合わせて適宜修正してください。

# cp -p /usr/ports/www/npc/work/npc-0.83/conf/sample2.idx /usr/local/etc/npc/npc.idx
# chmod 666 
/usr/local/etc/npc/npc.idx
# chown www:www 
/usr/local/etc/npc/npc.idx
# ls -l /usr/local/etc/npc/npc.idx
-rw-rw-rw-  1 www  www  1050 Apr 18 00:38 /usr/local/etc/npc/npc.idx

設定ファイル(npc.idx)についてですが、以下のように動作するよう修正しています。

  • http://or2.toから呼び出された場合は、カウントアップします。
  • http://or2.to以外から呼び出された場合は、カウントアップしません。
  • 192.168.0.1~254をつかっているブラウザからはカウントアップしません。
  • リロードされた場合はカウントアップしません。

始めINCREMENTのパラメータが0のままになっていたため、カウンターがカウントされない状態になっていました。cgiも設定も正しく読み込んでいるのにカウントアップしない場合は、INCREMENT辺りの設定を見直してください。
このブログでは設定ファイル(npc.idx)は以下のようにしています(一部アドレスは変えています)。ここで説明した以外にも設定できますので、詳細はアクセスカウンタ npc.cgi マニュアルを見てください。

 

#cat /usr/local/etc/npc/npc.idx

###
# 最初の部分は sample1.idx と同じ条件を構造化文を使って書いています。
#
 
=WIDTH
5
=PROGRESS
OFF
=INCREMENT
1
 
=IF=REFERER
  ^$
  =INCREMENT
  0
  =RESTRICTION
  1
=ELSIF=REFERER
  ^http://or2.to/
  =RESTRICTION
  0
  =INCREMENT
  1
=ELSE
  =RESTRICTION
  2
=ENDIF
 
=ADDR
192.168.0.*
=INCREMENT
0
 
###
# オプションでモード=1が設定されている場合は、リロードしても
# カウントアップしないようにしています。
#
 
=IF=OPT=MODE
  1
  =IF=ENV=HTTP_PRAGMA
    no-cache
    =INCREMENT
    0
  =ENDIF
=ENDIF
 
=COUNTER
0000000008 test
0000000001 http://www.your.site/your/page/index.html
0000000001 ftp://ftp.your.site/pub/down/conter.gz
 
0000020222 or2.to
 


カウンターの表示

npc.cgiを呼び出すため、アクセスカウンターを表示させたい場所に以下のようなHTML文を貼り付けます。

<img SRC="http://or2.to/npc.cgi?L=or2.to&C=0033FF&DI=2&W=8">

上記では npc.cgi がドキュメントルートに保存されている前提です。後、Lオプションはカウンターの識別文字で、Cオプションは表示される数字の色です。また、DIオプションは文字のフォントを指定して、Wオプションは表示させる桁数の設定です。

アクセスカウンタはこのブログの右上に表示させています。先日、アマゾンランキングも自前で表示させることに成功したので、良い感じでブログが仕上がってきていて満足しています

 

2011年9月 1日

UNFINISHEDでアクセスカンウター

このサイトのアクセス解析はawstatsを使用していますが、サイトでもアクセスカウンターを設置させアクセス数を確認したいと思い、Movable Type のプラグインを探してみました。
いくつかアクセス数を表示させるプラグインを見つけることができましたが、アクセス数を更新するためにサイトを再構築したりとリアルタイム性がなかったりで、個人的に利用したいプラグインがありませんでした。

そこで、UNFINISHED(アンフィニッシュト)が提供している無料アクセスカウンターを導入することにしました。無料のユーザ登録(名前とメールアドレス)を行うだけで、アクセスカウンターをすぐに利用できます。1日で2000HITまでと利用条件はありますが、一部のサイトを除き、個人が数年程度運営しているサイトでは、そこまでアクセス数は達しないと思います。
また、カウンターは5種類の色と2種類のタイプから選択できますので、自分のサイトに合うカウンターを選ぶことができます。

counter.jpg
クリックするとUNFINISHEDのサンプルページが表示されます。

なかなかこのカウンターも気に入っています。
目指すは一日2000HIT!!

2011年8月 8日

Related Entriesで関連記事を表示

ようやくこのBLOGもコンテンツが増えてきて、最近Access Counterプラグインを使って人気記事のランキングを表示させたばかりですが、以外と出来がよかったので調子に乗って関連記事を表示させることにしました。

使用したプラグインは Related Entries で、掲載した記事と同じカテゴリに属している記事の題名の一覧を表示させることができます。
以下、Movable Type 5.1でRelated Entriesを動作させるための設定方法について記載します。
 

  • プラグインのインストール

まず、Related Entries Plugin よりRelatedEntries.zipをダウンロードして、Movable Typeが動作しているサーバにアップロードします。

プラグインの管理がしやすいようにディレクトリを作成します。

 
#cd <インストール先>/MT-5.1-ja/plugins/
#mkdir RelatedEntries
 

アップロードしたZIPアーカイブを解凍し、RelatedEntries.plを実行可能なように属性を変更します。

 
# unzip RelatedEntries.zip
Archive:  RelatedEntries.zip
  inflating: License
  inflating: RelatedEntries.pl
#chmod 755 RelatedEntries.pl
 

先ほど作成したフォルダにRelatedEntries.plを移動します。この際にディレクトリとファイルのユーザ権限を変更してください。自分の場合はwwwユーザにしています。

 
#mv  RelatedEntries.pl <インストール先>/MT-5.1-ja/plugins/RelatedEntries/
#chown -R www:www   <インストール先>/MT-5.1-ja/plugins/RelatedEntries/
 

 

  • 関連記事の表示設定

管理画面の左にあるメニューより「デザイン」 -> 「テンプレート」を選択します。アーカイブテンプレートのカテゴリにある「ブログ記事」を選択し以下のように修正します。

 
       (途中省略)
          :
<mt:include module="ブログ記事の詳細" />
 
<mt:include module="関連記事" />  ←ここを追加しました。
 
<mt:include module="人気記事のランキング" />
 
<mt:include module="トラックバック" />
 
<mt:include module="コメント" />
 

続いて、テンプレートモジュールのカテゴリに「関連記事」を新規に作成して以下の内容を記載します。

 
<h3 class="rank-header">関連記事</h3>
<div class="entry">
<p> <MTRelatedEntries>
<ul>
<MTEntries lastn="15" offset="0">
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTEntries>
</ul>
</MTRelatedEntries>
</p>
</div>
 

青色の箇所はこのページで使用しているスタイルのため、各自の環境に合わせて変更してください。

これで設定は完了です。後は再構築を行って関連記事が追加されていることを確認して下さい。このサイトでの関連記事はこの記事の直ぐ下に表示されているので参考にしてみてください。
 

2011年8月 1日

Access Counterで人気記事のランキングを表示

人気記事のランキングを表示するために、AccessCounterを使用しました。AccessCounterはMovableTypeで記事ごとにアクセスをカウントして、アクセスランキングを表示するためのプラグインで非営利目的のサイト(個人のホームページ)では無償で利用することができます。

インストール方法やファイルのダウンロードは、このプラグインを提供してくれているMasata Mori 氏のサイト(ホームページメーカー)をご覧下さい。

レイアウトの参考のため色々のサイトを参考にさせてもらったところ、サイドバーに人気記事のランキングを表示する人が多いようですが、自分は記事の途中に表示させてみました。
以下、本ページで人気記事のアクセスランキングを表示させている設定の内容です。AccessCounterはMovableTypeにインストールされ有効にされた前提とします。
 

  • テンプレートの修正

管理画面の左にあるメニューより「デザイン」 -> 「テンプレート」を選択します。アーカイブテンプレートのカテゴリにある「ブログ記事」を選択し以下のように修正します。

       (途中省略)
          :
<mt:include module="ブログ記事の詳細" />
 
<mt:include module="人気記事のランキング" />  ←ここを追加しました。
 
<mt:include module="トラックバック" />
 
<mt:include module="コメント" />
 

続いて、テンプレートモジュールのカテゴリに「人気記事のランキング」を新規に作成して以下の内容を記載します。

<mt:If tag="BlogEntryCount">
  <mt:Entries sort_by="accessed_count" sort_order="descend" limit="10">
    <mt:EntriesHeader>
      <h3 class="rank-header">人気記事のランキング</h3>
      <div class="entry">   
      <ul>
    </mt:EntriesHeader>
    <$mt:setvar name="rank" value="1" op="++"$>
        <li><$mt:var name="rank"$>位:<a href="<$mt:EntryPermalink$>"><$mt:EntryTitle$></a></li>
    <mt:EntriesFooter>
      </ul>
      </div>
    </mt:EntriesFooter>
  </mt:Entries>
</mt:If>

青色の箇所はこのページで使用しているスタイルのため、各自の環境に合わせて変更してください。

最後に「サイトの再構築」を行ってサイトを確認して下さい。記事は自動的に更新されないため、「サイトの再構築」を行ってラインキングを反映させる必要があるようです。
ちなみに、自分のサイトでは記事の詳細のページで、この直ぐ下に表示させています。