ホーム > タグ > PHP

PHP

掲示板スパムボット報告 – AHoo+C

掲示板スパムボット報告 – AHoo+CPHPで翻訳三昧
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark
Bookmark this on Delicious
このエントリーをはてなブックマークに追加

掲示板スパムボット対策に新しいフィルターを試してます。
が、設置3日で不覚にも突破されました。
原因は、isSpam() が全く反対の判定結果を返してました。
こういうのがあるから先にテストケースを書くべきなんですね。

それにしても、設置から丸3日間は
投稿フォームを収集しに来た形跡が無かったことを考えると、
スパム投稿を防げることに加え、リクエストすら来なくなるので
Javascript等で投稿フォームを隠しておくことが
どれほど有効なのか良くわかります。

こんな対策を施してます:
JavaScript でスパム投稿対策
積極的なスパム投稿対策

ひさしぶりのスパム投稿なのでこの機会に
AHoo+C(勝手に命名)という掲示板スパムボットが
どんなやつなのかプロフィールをご紹介します。
続きを読む

クリックだけで絞り込み検索

クリックだけで絞り込み検索PHPで翻訳三昧
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark
Bookmark this on Delicious
このエントリーをはてなブックマークに追加

久しぶりにアプリケーション作ってみた。
名づけて『クリックだけで絞り込み検索』

こんな感じのことをやってるサイトをどっかで見かけ
いいアイデアと思ったけど、したはずのブックマークがみつからず
薄れかけてる記憶をたどりながらノベ5日かけて完成しました。
出来るときは何でも一気にできてしまうものです。

一般にあまり使われない専門用語がたくさんある業界だと
キーワード検索で目的の商品にたどり着くのは困難だけど
あらかじめキーワードが羅列してあるこの検索方法なら
ユーザーは何かしら次のアクションが取れるわけです。
これをプルダウンメニューの絞込み検索にすると見通しが悪い。

クリックだけで絞り込み検索
うちわ検索

素材はクライアントさんの商品を流用させていただきましたので
この先はホントのECサイトにつながってます。

文字を打つことなくキーワードを足したり引いたり、
クリックだけで検索出来る利便性もさることながら、
この検索に感じる一番の魅力は
検索されるキーワードとランディングページの関連付けを
操作できる可能性を持っていることです。

絞り込まる程に特定のキーワードに特化した検索結果になるので
「検索エンジンで上位に来てるけど見せたいページじゃない」
といったジレンマを解消する内部的なSEO対策になると思います。
続きを読む

スパム業者から投稿フォームを隠す

スパム業者から投稿フォームを隠すPHPで翻訳三昧
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark
Bookmark this on Delicious
このエントリーをはてなブックマークに追加

またPHPの基礎体力掲示板の話。
今日のスパム投稿がこれ

59.42.230.94
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MAXTHON 2.0)

またまた手入力による投稿、大変ご苦労なことです。
Hostをみると中国からの投稿で
リクエスト履歴を追うとご丁寧に Referer を残してあります。
Googleで 「新規投稿 bbs」 を検索した結果からでした。
検索結果の表示開始が 240 となってるので
こうしてみつけた掲示板に手当たり次第投稿してるのでしょう。

決定的なスパム投稿対策ではありませんが
検索結果に投稿フォームのページが表示されなければ
こうした投稿もありませんので、検索エンジンがインデックスしないよう
いくつか対策を施してみました。
続きを読む

SQLインジェクション発見

SQLインジェクション発見PHPで翻訳三昧
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark
Bookmark this on Delicious
このエントリーをはてなブックマークに追加

IPA情報処理推進機構さんで提供されてる
ウェブサイトの脆弱性検出ツール iLogScanner
昨年11月にバージョンアップしてました。
って、気付くの遅いですね。
気にしてたつもりでしたがアナウンスを見逃してたようです。

個人サイトだと、第三者から客観的に
サイト内を見てもらう機会ってそうありませんし
アプリケーションの現状での脆弱性を確かめられるので
まだの方は使ってみてください。

さて、PHPの基礎体力のココ2日分のアクセスログを
チェックしてみたところこの度はじめて検出されました。
SQLインジェクションが 176件、このうち
攻撃が成功した可能性の高い件数は 0件という結果です。

解析結果レポート

攻撃とみなされたアクセスは、こんな感じで解析ログに記録されます。

攻撃が検出されたログ

攻撃部分のコード掲載はやめときますが
すべて副問合せを含んだSQLだったので
うちのサーバではまったく機能しない攻撃でした。

とはいえ、持ちあわせの知識で
考えられる限りのこんな対策を施しています。
続きを読む

$_SERVER['HTTP_*'] はクライアントの値

$_SERVER['HTTP_*'] はクライアントの値PHPで翻訳三昧
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark
Bookmark this on Delicious
このエントリーをはてなブックマークに追加

スパム投稿の特徴を見つけ出すのに、どんな値を
ログに記録してたらいいのか試行錯誤してたところ、
PHPがあらかじめ用意してくれるスーパーグローバル変数
$_SERVER の中でキーが HTTP_ で始まるものが
クライアントが送信してきた値だとつい最近知りました。

よく Proxy が付加してくる ViaX-Forwarded-For など
全て大文字で、- (ハイフン)は _ (アンダーバー) に変換され
こんなキーで得られます。

$_SERVER['HTTP_VIA']
$_SERVER['HTTP_X_FORWARDED_FOR ']
続きを読む

auto_prepend_fileで役割分担

auto_prepend_fileで役割分担PHPで翻訳三昧
Bookmark this on Livedoor Clip
Bookmark this on Yahoo Bookmark
Bookmark this on Delicious
このエントリーをはてなブックマークに追加

このブログ、12日の早朝よりスパム投稿の集中砲火をあびとります。
今朝出勤ししてから仕事を終えて戻るまでに
コメントスパムとトラックバックスパム両方で300件強。
あーめんどくさい。

広く知られた WordPress だけにスパム業者も解析済みのようで
コメントスパムもフォームを拾いに来た形跡がありません。
TBに至ってはフォームそのものが無関係なので
今回は Javascriptでスパム投稿対策 とはいかんようです。

スパム業者には早々退散願いたいところですが
WordPress に手を加えるのもなんだと思ったので
auto_prepend_file を使ってみました。

auto_prepend_file は、
リクエストされたPHPスクリプトの実行前に
自動で実行するスクリプトを指定するPHPの設定です。
自動 require みたいな事ができます。

コア php.ini ディレクティブに関する説明
auto_prepend_file

これが指定できるのは .htaccess です。
自動実行させたいスクリプトのパスが
‘/home/userdir/spamFilter.php’ だとすると
該当ディレクトリの .htaccess に次の1行を書き加えます。

.htaccess

php_value auto_prepend_file "/home/userdir/spamFilter.php"

これによりPHPスクリプトがリクエストされると
その実行前に必ず spamFilter.php が実行されます。
自動実行される spamFilter.php は、
普通のPHPスクリプトと変わりなくなんでも出来ます。
ただし、対象のディレクトリ以下全てのPHPスクリプトの実行前に
必ず実行されることになるので使いどころ注意です。

今回はスパム投稿をハネて余分なサーバーの負荷を
減らせれば良いので、POSTメソッド以外はサッサとスルーさせ
残りをブラックリストでフィルタリングです。
引っかかったやつには、
「404 Not Found + 本文無し」 のレスポンスです。

spamFilter.php

<?php
if ('POST' === $_SERVER['REQUEST_METHOD']):
    $__isSPAM = false;

   /**
    * このへんは、UAやHost、Proxyっぽいものなど
    * 適当にブラックリストでフィルタリング。
    * 該当する場合は $__isSPAM = true; にする。
    */

    if (true === $__isSPAM) {
        header('HTTP/1.0 404 Not Found');
        exit();  // SPAMに本文は不要!
    }
endif;
?>

auto_prepend_file でこうした役割を持たせれば
アプリケーションに手を加えることもなく本来の役割に専念させられます。

ホーム > タグ > PHP

Ad
Apache
MySQL
PHP
お気に入り
ん。。。。。。広告
アーカイブ

ページの上部に戻る