トップ » PHPスクリプト » スパム対策機能と記録形式

スパム対策機能と記録形式

(2007/09/20)

当Webサイトで配布中のPHPスクリプトでは、スパム投稿の記録(ログ)を2つのファイルに保存しています。 ここではWebサイト管理者のために、その形式と意味を説明します。

ファイル1: スパム投稿元とその集計

スパム投稿元ホストと集計情報を、下記の形式でdata/posthost.txt、またはdata/antispam_host.txtファイルに記録しています。 (\tはタブ文字を示す)

ホスト \t 初回投稿日時 \t 最終投稿日時 \t 投稿回数

実際のファイルは、下記のようになります。
antispam_host.txt: スパム投稿元ホストと日付、回数の記録ファイル

スクリプトに対する投稿操作(POST要求)があると、一時クッキーを発行し、このファイルに記録されます。 スクリプトに対する閲覧操作(GET要求)があって、そのクライアントが一時クッキーを保有していた場合、 このファイルから記録を削除します。

通常の投稿操作であってもこのファイルに記録されますが、 当Webサイトで配布するどのPHPスクリプトでも、正常な操作で投稿を完了した場合に記録から削除されます。 一方、正常に投稿操作を完了せず一定時間が経過した場合はスパム投稿元とみなされ、 スクリプトに対する投稿操作ができなくなります。 具体的には、スパム投稿元が投稿操作(POST)を行った場合に、403 Forbiddenエラーを返すことがあります。

スパム投稿元と認定された場合でも、数日経過すると再び投稿できるようになります。 しかし、スパム投稿元と認定されている間に投稿を行うと、記録期間が延長されます。 その結果、当該ファイルに記録が残り続け、スパム投稿元として継続的に認定されたままになります。

ファイル2: スパム投稿の内容

スパム投稿があった日時、ホスト、HTTPリクエストヘッダ、及び投稿内容を下記の形式でテキストファイルdata/spamlog.txt、 またはdata/antispam_log.txtに記録しています。 (\tはタブ文字、{ }で囲われた領域は繰り返しを示す)

日時 \tホスト \t {リクエストヘッダ名 \t } \t {POSTフィールド名 \t }

実際のファイルは、下記のようになります。
antispam_log.txt: スパム投稿の内容ファイル

このファイルは、ファイル1によってスパム投稿元と判定された場合にのみ、その投稿内容を記録します。 このファイルは難読ではありますが、Webサイト管理者の便宜のためにあります。 各PHPスクリプトは、このファイルを参照してその動作を変えることはありません。

善意の投稿者から「投稿できない」と言われたら

各PHPスクリプトは、ファイル1 (data/posthost.txt、data/antispam_host.txt)の保存内容に基づいて、投稿操作の許可または禁止を決定しています。 しかしこの仕組みでは、ファイルに潔白な投稿元が保存された場合であっても投稿できなくなる可能性があります。

もし、利用者から投稿できない旨の報告を受けた場合は、 利用者の投稿時間やIPアドレスに関する行をファイル1から削除してください。 その場合には、ファイル2 (data/spamlog.txt、data/antispam_log.txt)を参照して、 申請者の報告内容が確かなものであるか確認するとよいと思われます。

該当行がわからない場合でも、ファイル1自体を削除すると正常に投稿できるようになります。 ただし、この操作は、それまで制限されていたスパム投稿元も再び投稿可能になることを意味しています。 ファイル1の削除は、慎重に検討してください。