はじめに
メール配信サービスを利用して会員向けメール配信を行なっている事業者さんからの相談で、仮登録メールというのが毎日大量に送られてくるのをなんとかしたいとのこと。
サービス事業者になんとかする方法がないか確認してみてはと伝えたところ、その事業者の回答は「仮登録されてもなんの影響もないので放置して大丈夫。」というものだったそうです。
ただ、その事業者さんは仮登録から本登録への移行割合を指標として利用しているところがあって、仮登録を無視できないとのことでした。
ということで、長くなりましたが以下に今回行なった対策方法をまとめます。
対策方法
アクセス拒否
ログを見ると複数のIPアドレスから定期的にアクセスされているようだったので、不審なIPアドレスのアクセスを拒否するようにしました。
今回はWebサーバーにApacheを使っていたので、以下のようにhtaccessを使ってアクセス拒否の設定を行いました。
# sudo nano .htaccess
order allow,deny
allow from all
deny from ***.***.***.***
deny from ***.***.***.***
:
deny from ***.***.***.***
ただし、この方法ではアクセスしてくるIPが変更になると都度追記が必要となります。
JavaScriptの追加
BOTっぽいアクセスはGoogleアナリティクスに記録されていなかったので、JavaScriptは動いてないと判断して、JavaScriptで仮登録送信先を変更するようにしてみました。
変更前
<h1>メール配信の登録</h1>
<p>メール配信の登録はこちら</p>
<form method="post" action="https://***.jp/***/***.php?id=***&task=regist">
<div><input name="form[mail]" type="text" size="50"></div>
<div><input name="regist" type="submit" value="登録"></div>
</form>
変更後
<h1>メール配信の登録</h1>
<p>メール配信の登録はこちら</p>
<form id="registForm" method="post" action="./" onsubmit="return confirm_submit();">
<form method="post" action="">
<div><input name="form[mail]" type="text" size="50"></div>
<div><input name="regist" type="submit" value="登録"></div>
</form>
<script>
function confirm_submit() {
ans = confirm('送信して良いですか?');
if (ans) {
document.getElementById('registForm').action = 'https://***.jp/***/***.php?id=***&task=regist';
}
return ans;
}
</script>
結果
対策後、BOTのIPアドレスがいくつか増えたりしましたが、都度対応してアクセスを拒否できました。
また、BOTと思われるアクセスがあってもJavaScriptが動作しないため仮登録のメールは送られてきませんでした。
約1週間後、BOTからのアクセスはなくなり現在は平和な日々を送っています。
ということで、対策成功!