SHOJI's Code
 仕事や趣味で書いた各種言語のプログラミングコード(エクセルVBA,PHP,C/C++/C#,JavaScript等)、その他雑記。
2017.10<<123456789101112131415161718192021222324252627282930>>2017.12
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

1ヶ月以上放置してしまいました(^^;

管理しているサイトの掲示板にスパムが投稿されるようになってしまいました。一度対処した後にさらに別のスパムが!!

最初の奴は、REFERERが正しくないのでそこでチェック。2つ目はフォーム内にHiddenで仕込んだUSER AGENTが空だったのでそこでチェック。


(略)


if( $ua == "" || $ua != $_SERVER["HTTP_USER_AGENT"] )
{
$errmsg = "端末情報に誤りがあります:$ua";
}
else if( IsSPAM() )
{
$errmsg = "投稿が正しく行われませんでした:".$_SERVER["HTTP_REFERER"];
}
else if( $name == "" )
$errmsg = "投稿者名が空欄です";
else if( $body == "" )
$errmsg = "内容が空欄です";
else
{
$qry = @mysql_query("insert into ...(略)...", $conn);
if( mysql_errno() > 0 )
$errmsg = mysql_error();
else
{
header("Location: ./");
}
}


(略)




$uaはフォーム内にHiddenで仕込んであるUSER AGENTを返す変数である。これと実際のUSER AGENTが一致しなければ、フォームを表示した端末と投稿した端末が異なることになるので、それで排除。
IsSPAM()関数はヒミツ(笑)。REFERERをチェックしてるだけなんだけど、DoCoMoの携帯はREFERER返さないので、その辺りもチェックもしてるだけだけど・・・。

テーマ:PHP - ジャンル:コンピュータ
コメント
この記事へのコメント
コメントを投稿する

管理者にだけ表示を許可する
トラックバック
この記事のトラックバックURL
この記事へのトラックバック
copyright © 2004-2006 SHOJI, Powered By FC2ブログ all rights reserved.
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。