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?

More than 1 year has passed since last update.

問い合わせフォームにスパムが大量に来たため、簡易対策をした話【Laravel】

Posted at

はじめに

実務で問い合わせフォームにいつからか大量のスパムが送られるようになり、どうにかならないかと相談を受けたため、色々調べて以下の簡易的な対策を実施することにしました。

スパムを送信するロジックについて

調べたところによると、スパムはbotを使用して、フォーム内のすべての項目に値を自動入力し、送信してくるケースが多いようです。

その特性を利用して、表示上見えないフォームを作成し、そのフォームに値が入っていたらスパムと判断(普通はフォームが見えず、値が入力できないため)し、404を返す形で実装します。こういった形は「Honeybot」と呼ばれるようです!

実装したコード

contact.blade.php
    <form  method="POST" action="{{ route('contact') }}">
        @csrf
        <div>
            <h2>お問合せフォーム</h2>
            <dl>
                <dt>
                    <label for="name">氏名<span>必須</span></label>
                </dt>
                <dd>
                    <input type="text" class="form-control{{ $errors->has('name') ? ' is-invalid' : '' }}" name="name" id="name" placeholder="氏名" value="{{ old('name', '') }}" >
                </dd>
                // こちらを今回追加
                <dd style="display:none;">
                     {{ Form::text('subject', '') }}
                </dd>
            </dl>
        </div>
    </form>
ContactController.php
    if(isset($request['subject'])){
        abort('404')
    }

さいごに

今回こちらを実装したことで、実際にスパムが来なくなりました!
ちょっとした工夫が大切なんだなと勉強になりました。

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?