ホーム > アーカイブ > 2009年3月25日のアーカイブ
2009年3月25日のアーカイブ
JavaScript でスパム投稿対策
- 2009-03-25 水 17:33:28
- 今日の基礎体力
PHPの基礎体力掲示板の話です。
最近は UA に MRA 4.3 を含んだPOSTのアクセスが目立ちます。
多い日は1日250件くらいあります。
Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; MRA 4.3
(build 01218))
MRA 4.3 ってなんでしょうね。まあ
スパム投稿のUAなんで気にすることもありませんが。
正規のフォームを介すことなく、
直接ターゲットの URL に POST しているので
ロボットによる自動投稿だと思われます。
ブラックリストをつくって、IPや投稿内容でフィルタリングしてはいますが
新らしいHOSTやパターンが現れると、その度に
投稿を削除して、リストを更新してとかなり面倒です。
新規投稿以外は、Javascriptでフォームを表示してるおかげで
スパム投稿はまったくありません。
アホなロボットがJavascriptを解釈してまで
投稿してこないだろうと読んだのは正解でした。
新規投稿についてもJavascriptで対策できそうだなと思い
試したところかなり効果があったので紹介します。
要点は、フォームの action にダミーの URL を指定しておき、
送信直前に DOM で action を正しいURLに書き換えるわけです。
これで正規のフォームからの投稿だけが受け付けられます。
フォーム側はこんな感じ。加えて下のJavascriptをロードしておきます。
<form id="postForm" method="post" action="/badPost" onSubmit="return validateForm()"> * * この /badPost はダミー * </form>
post.js (prototype.jsを使ってます)
function validateForm() { // フォームの送信先を正規のURLに変えます。 $('postForm').action = '/post'; return true; }
ダミーの /badPost ですが、実際は
ブラックリストを更新するスクリプトにしておきます。
人の目で post.js を見て投稿先URLを変えられるとそれまでですが
新規投稿以外のPOSTアクセスが無いことからすると
業者もJavascript までは見てないようです。
導入して3日経ちましたが今のところ100%排除できています。
もし投稿してきたら、こちらも URL を変えるまでです。
その間にも着々とブラックリストは更新されていきます。
- コメント: 7
- トラックバック(閉): 0
ホーム > アーカイブ > 2009年3月25日のアーカイブ
- 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