掲示板スパム対策
トップ(デッドリンク削除)の1行掲示板がスパム被害に遭っている件について,その対策.
件の掲示板はPHP Squareさん(デッドリンク削除)のminibbsを利用したものである.クラス中で起こす変数は,アンダーバーの有る無しがあった.データを加工するか否か,といったところか.これに従い,
var $_addr var $_host
を追加した.またindex.phpのform中でも,次のようなinput要素を追加した.
<input type="hidden" name="remote_addr" value="<?php echo $_SERVER['REMOTE_ADDR'];?>"> <input type="hidden" name="remote_host" value="<?php echo $_SERVER['REMOTE_HOST'];?>">
クラスで宣言した変数は this-> と,thisからのアロー演算子で呼ぶらしい.これに従い,minibbs()に次の記述を挿入した.
<? $this->_addr = $HTTP_POST_VARS[remote_addr]; $this->_host = $HTTP_POST_VARS[remote_host]; ?>
こうして得たホスト情報はmakeNewLine()で加工される.スパマーは国外からのアクセスだろうから,IP/Hostの列挙はjp以外にした.freestyleのどこかのスレッドのどこかの書き込みをほぼまる写しすると,次のようなソースになった.
<? # 日本IPのみ部分表示 if(eregi("jp$", $this->_host)){ $this->_host = eregi_replace(".+\.(.+\..+\..+)$","\\1", $this->_host); $this->_newLine = $this->_name."> ".$this->_comment."[".$date."]<!-- ".$this->_host." --><br>\n"; }else{ # 完全表示 $this->_newLine = $this->_name."> ".$this->_comment."[".$date."]<!-- ".$this->_addr.", ".$this->_host." --><br>\n"; } ?>
それでさっき,09067a0bさんが引っかかったので晒す.
d2e175f4 http://65b8b0db.com <a href='http://dd6ee6cd.com'>24d15318</a> [url]http://15f4803f.com[/u[2/3(Fri)]<!-- 165.139.114.1, dcg.frontier.k12.in.us --><br>
.htaccessにdeny from dcg.frontier.k12.in.us
を追加した.
まとめ
- 掲示板スパムが発生した
- IP/Hostを記録するように改造
- スパマーが利用しているホストを.htaccessで制限する
- whois情報参照にはANSI Whois Gateway: ドメイン名 / IPアドレス検索サービスもいいけど,ドメイン/IPアドレス【whois情報検索】が便利だった