stereologでトラックバックスパムを予防する 06.04.09, 23:11
大手会社提供のブログシステムを借りているワケではないので(?)、トラックバックスパムが来ることは滅多になく、来てても手作業の削除で間に合っていたのですが、今回の某国からの機械的なトラックバックスパムには手作業が追いつかなくなりました。

ということで、stereologを改造したときのプログラム公開です。

送信されてきたURLを読み込みにいって、自分のサイトのURLが存在するかどうかをチェックしています。

悪質スパマの立場から考えれば、これをすり抜ける方法くらいすぐに思い浮かびますが、ま、これが今時点での大手ブログサイトでの対処とほぼ同等なもんでしょ。


tb.php 28行目付近

if (! isset($_REQUEST['url'])) {
    response("url not specified");
}
$url = htmlspecialchars(urldecode($_REQUEST['url']));

$fp = fopen($url,"r");
if (! $fp){
    response("url not found");
}
$contents = '';
while (!feof($fp)) {
    $contents .= fread($fp, 8192);
}
fclose($fp);
if ( strpos($contents, ROOT_DIR) === FALSE ){
    response("link ( ".ROOT_DIR." ) is not found");
}


if (! isset($_GET['id'])) {
    response("id not specified");
}
$id1 = substr($_GET['id'], 0, 4);
$id2 = substr($_GET['id'], 4, 4);
$datetime = time();

comments (2)
始めまして。
パクりました。
ありがとうございます。

こちらのブログからTBしたのですが
反映されませんね^^;
#1 posted by t at 06.04.14, 14:24
tさん>>>

ナイスなご指摘ありがとうございます。

stream_get_contentsが使えるのはPHP5からですね。

テスト環境がPHP5だったので、本番環境(PHP4)にそのまま上げてしまいました(ま、よくあるミスで…)。

ブログ本文中のPHPソースもstream_get_contentsを使わないよう(=PHP4でも動くように)に書き換えておきました。

お手数をおかけして申し訳ないですが、トラックバック再挑戦してみてください。
#2 posted by Syna at 06.04.14, 21:39
post a comment
投稿者 :::

コメント(タグは使用できません) :::