0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

利用している高品質なメール配信サービスにBOTから大量の仮登録があったのを対策してみた話

Posted at

はじめに

メール配信サービスを利用して会員向けメール配信を行なっている事業者さんからの相談で、仮登録メールというのが毎日大量に送られてくるのをなんとかしたいとのこと。

サービス事業者になんとかする方法がないか確認してみてはと伝えたところ、その事業者の回答は「仮登録されてもなんの影響もないので放置して大丈夫。」というものだったそうです。

ただ、その事業者さんは仮登録から本登録への移行割合を指標として利用しているところがあって、仮登録を無視できないとのことでした。

ということで、長くなりましたが以下に今回行なった対策方法をまとめます。

対策方法

アクセス拒否

ログを見ると複数の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からのアクセスはなくなり現在は平和な日々を送っています。

ということで、対策成功!

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?