*.jp以外のドメインからの投稿を禁止する [#c08452e9]

スパム投稿のほとんどは海外から行われます。投稿もとのドメインを調べて、海外からの投稿であると判断できれば、投稿を拒否することは、スパム対策として有効です。

例えば、[[OTD掲示板>http://blog.livedoor.jp/bbsnews/archives/50328205.html]]では、次のようなドメインからの投稿を規制しているということです。

.ae .ar .at .au .be .bg .bk .bn .br .by .ca .cc .ch .cl .cn .co .cr .cz .de~
.dk .do .ee .es .eu .fi .fm .fr .gr .hk .hr .hu .id .ie .il .in .is .it .ke~
.kg .kr .mu .mx .my .nl .nu .nz .om .ph .sa .se .sg .si .sk .sv .th .tt .tw~
.ua .uk .us .uy .pe .pk .pl .ru .ro .ve .za

#code(perl){{
#ホスト名の取得
$remote_addr = $ENV{'REMOTE_ADDR'};
$remote_host = $ENV{'REMOTE_HOST'};
if (!$remote_host || $remote_host eq $remote_addr)
{
	$remote_host = gethostbyaddr(pack('C4',split(/\./, $remote_addr)),2);
}

#ホスト名が取得できなかった時
if (!$remote_host || $remote_host eq $remote_addr)
{
	print 'ホスト名の逆引きができないホストからの投稿は禁止されています。';
	exit;
}

#ホスト名が許可されたものか調べる
#ここでは、.jpドメインだけを許可する
if ($remote_host !~ /\.jp$/)
{
	print '.jpドメイン以外のホストからの投稿は禁止されています。';
	exit;
}

print 'ホストは.jpドメインです。';
}}

#code(php){{
//ホスト名を取得する
$remote_host = $_SERVER['REMOTE_HOST'];
if (empty($remote_host) || $remote_host == $_SERVER['REMOTE_ADDR'])
{
	$remote_host = gethostbyaddr($_SERVER['REMOTE_ADDR']);
}

//ホスト名が取得できなかった時
if ($remote_host == $_SERVER['REMOTE_ADDR'])
{
	exit('ホスト名の逆引きができないホストからの投稿は禁止されています。');
}

//許可されたホストか調べる
//ここでは、.jpドメインだけを許可する
if (!preg_match('/\.jp$/', $remote_host))
{
	exit('.jpドメイン以外のホストからの投稿は禁止されています。');
}

exit('ホストは.jpドメインです。');
}}

//これより下は編集しないでください
#pageinfo(,2007-05-14 (月) 01:31:04,DOBON!,2007-06-23 (土) 02:11:36,DOBON!)
[ トップ ]   [ 新規 | 子ページ作成 | 一覧 | 単語検索 | 最終更新 | ヘルプ ]