##仕組み
スパムボットはフォーム内のすべての項目に自動的に入力していくことが多いので
表から見えない「非表示の項目」をつくり、そこに入力されている場合はスパムと判断し404にとばす処理をする。
##ビュー
非表示の項目を作成
{{Form::text('honeypot','',['style'=>'display:none'])}}
##コントローラー
リクエスト「honeypot」の中に値が入ってたら代入。
if(isset($request->honeypot)) {
$contacts->honeypot = $request->honeypot;
}
ログ残すなら
Log::info($contacts);//個人情報含む場合、暗号化が必要
検知したら404にとばす
if(isset($contacts->honeypot)){
abort(404);
}
##最後に
今回は簡単な除外対策でしたが、
もう少し凝ると、$_SERVER[‘REMOTE_ADDR’]でリクエストIP取得して、特定のアクセスは拒否する。とか
更に凝ると、画像認証(CAPTCHA認証)の実装とか
色々な対策あって勉強になった。