外部フォーム:同一ドメインのメールアドレスから送付されるスパムメールを防ぎたい(CAPTCHAは設定済)

2018年3月1日 at 10:45

お客様から、2日前(2/27)に、@qq.comから1分間に5通のペースでお問い合わせフォームのメールが送付されるので止めて欲しい、との問い合わせがありました。
その日は、標準のフォームのソースを参考にCAPTCHAを実装して、メールは止まったのですが、本日(3/1)に、昨日の深夜からまたフォーム送付が繰り返されている、という連絡がありました。
アドオンをインストールしてreCAPTCHAに変更したのですが、メールの送付が止まりません。
同一ドメインから複数回メールが送付された場合に、止める方法はあるのでしょうか?
(現在はIPアドレスでアクセス拒否をしてとりあえずの対処をしています)

タグ:

Re: 外部フォーム:同一ドメインのメールアドレスから送付されるスパムメールを防ぎたい(CAPTCHAは設定済)

2018年3月1日 at 12:07
qq.comは悩みのタネですな…
 

Re: 外部フォーム:同一ドメインのメールアドレスから送付されるスパムメールを防ぎたい(CAPTCHAは設定済)

2018年3月2日 at 14:21
すいません……。フォームの動作チェックをしていた所、
そもそもCAPTCHAのチェックが出来ていないことが判明しました。
(空欄でなければフォームが送付出来ていました)

標準のフォームを参考にして、

$captcha = Loader::helper('validation/captcha');
<div class="form-group captcha">
<?php
$captchaLabel = $captcha->label();
if (!empty($captchaLabel)) {
?>
<label class="control-label"><?php echo $captchaLabel; ?></label>
<?php
}
?>
<div><?php $captcha->display(); ?></div>
<div><?php $captcha->showInput(); ?></div>
</div>

View側では上記コードでCAPTCHAを表示し、


$captcha = Core::make('helper/validation/captcha');
if (!$captcha->check()) {
$isvalid = false;
$error['captcha'] = t("Incorrect captcha code");
$input['ccmCaptchaCode'] = '';
}

Controller側にチェックするコードを追加したのですが、これでは不完全だったようです……。

フォームのcontrollerを見ても、他にcaptchaをチェックしている箇所が見当たらないのですが、
どこかに必要な処理があるのでしょうか?
 

Re: 外部フォーム:同一ドメインのメールアドレスから送付されるスパムメールを防ぎたい(CAPTCHAは設定済)

2018年3月2日 at 17:12
バリデーションの失敗した時に例外を投げて外側でキャッチするという実装じゃなく、falseを代入してるだけなので、そのあとでtrueに上書きされてるとかは、あり得そうですが。