ホーム > アーカイブ > 2009年4月16日のアーカイブ
2009年4月16日のアーカイブ
auto_prepend_fileで役割分担
- 2009-04-16 木 00:19:33
- PHP
このブログ、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 でこうした役割を持たせれば
アプリケーションに手を加えることもなく本来の役割に専念させられます。
- コメント: 0
- トラックバック(閉): 0
ホーム > アーカイブ > 2009年4月16日のアーカイブ
- Ad
- Apache
- MySQL
- PHP
- お気に入り
- ん。。。。。。広告
- アーカイブ
-
- 2018年3月 (2)
- 2017年4月 (1)
- 2015年12月 (1)
- 2015年9月 (1)
- 2014年8月 (1)
- 2013年12月 (1)
- 2013年6月 (1)
- 2013年5月 (1)
- 2012年7月 (2)
- 2012年6月 (1)
- 2012年4月 (1)
- 2012年3月 (2)
- 2011年8月 (1)
- 2011年7月 (1)
- 2010年7月 (1)
- 2010年6月 (2)
- 2010年5月 (1)
- 2010年4月 (3)
- 2010年3月 (2)
- 2010年2月 (1)
- 2010年1月 (1)
- 2009年11月 (1)
- 2009年5月 (3)
- 2009年4月 (5)
- 2009年3月 (8)
- 2009年2月 (2)
- 2008年11月 (1)
- 2008年7月 (1)
- 2008年5月 (3)
- 2008年4月 (4)
- 2008年3月 (1)
- 2007年12月 (2)
- 2007年8月 (1)
- 2007年7月 (4)
- 2007年6月 (4)
- 2007年5月 (2)
- Ad