掲示板スパム対策

トップ(デッドリンク削除)の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>

.htaccessdeny from dcg.frontier.k12.in.usを追加した.

まとめ