そういえばここ数年はcmsばっかり触ってる。
どういうアレか
5年以上前、ひょっとしたら10年くらい前に作ったWEBサイトがここに来てスパムの被害にあった。
問い合わせフォームからめっちゃ送信されるという、サーバーからも怒られるヤバいやつ。
SSLが一般的になる前からのものを放置してるのが悪いんだけど、今更すぎてドン引きしてる。
基本的にhtmlで組んでて、問い合わせフォームはphpに飛ばしてメール送信するっていう昔ながらの構成。で、諸悪の根源はフォームなので、フォームを消してしまってメールアドレスだけ画像とかで掲載すれば手っ取り早いんだけど、どうにか足掻いてみようという感じで。
今回のはフォームから送ってくるタイプなので、送信するphpに直接のアクセスをしたら弾くってのは意味がない。送信の手順をきちんと踏んでるからだるい。
スパムといえば英数字の羅列なんで、「フリガナ」的なものを作ってバリデーションを噛ませたらいいというのもあるんだけど、どうせならreCAPTCHAを使ってみようという取り組み。
やっていく
reCAPTCHAのアカウントを作る
「v3 Admin Console」からドメインを登録して「サイトキー」「シークレットキー」を取得する。
ドメイン単位の登録になるけど、サブドメインも含まれるので楽ですね。
組み込む
公式がガイドを出してる。
2つのキーを送信時、処理時に使って判定をやっていくということ。フォーム側は分かるんだけど受け取ったときの処理がよくわからない感じなので、導入例を見ていく。
検索してみるとwpへの導入だったりv2の内容だったりが溢れててアレだけど、まあ、根気強く探せば出てくる。
判定後の処理
普通にやってたら送信できるはずなんで、スパム判定時の処理はdie()とかで強制終了させるだけでいいと思います。万が一、人の手でもそうなったときを考えたら丁寧に組むべきだけど、そういう事例になったことがないので。そもそも負荷をかけられてるのにこっちから更に増やすようなことはしたくないという気持ちもある。
効果測定
メールが送られなくなったら成功。なので、仕込んだら様子を見る。
reCAPTCHAじゃなくてもいいけどさ
スパムメールが来るってだけなら迷惑メールにぶち込めば済むんだけど、昨今のアタックは桁が違ってサーバーから警告や機能制限が飛んでくるレベルになったりする。大手WEBサイトなら分かるけど弱小も被害にあうことがあるので他人事にできない。
無料の範囲でもやれることはあるし、それでちゃんと効果は出るので対策は仕込んだほうがいいです。
楽なのはフォームを設置しないだとか、Googleフォームを使うだとか。
手が込んだことをするなら今回みたいなreCAPTCHAを入れる、似たものを頑張って自作するとか。
外部サービスに頼ると通信とか処理が増えてめんどくさいこともあるので、とりあえずで入れるのもいいけど不具合を感じるなら別の手段を選べる、選択肢が構えられるようにできると良いですね。
追記:使ってみた
馬鹿みたいに来てたスパムメールが無くなった。
とはいえ万全じゃなくて、漏れるやつもあるみたい。
そういうのは、日本向けサイトであれば、最初に書いたように日本語の項目にバリデーションを入れたらいける。
コメント