ブログのスパム対策として、新たな対策プラグインとGoogleの「reCAPTCHA」を導入することにしました。
WordPressで運営している当サイトのコメント欄・問い合わせフォームでは、おもに海外から送られてくるスパムメール(フィッシング詐欺などの危険性が高い)への対策として、「Akismet」というプラグインを利用していました。
ところがこの「Akismet」、以前からどうもおかしな部分があり、しかもよくよく確認してみると、いつのまにか広告を利用するなどしているサイトは無料で利用できないということになっていたのです。
そこで私は、同プラグインを使わないことにし、別の方法でスパム対策を行うことにしたので、今回はそういった経緯や、「Akismet」以外の代用方法についてもご紹介したいと思います。
Akismetのおかしな挙動と利用規約の変更
スパム対策プラグインといえばこれ、ともいえるほど定番の「Akismet」は、送信されたコメントを自動でチェックし、スパムとおぼしきものはその場で消去、もしくはいったん専用のスパム箱に入れておいてくれるというすぐれもの。
スパム除去の精度も高く、問い合わせフォームにも連携することができたことから、私はこれを利用させてもらうことで、やたらと送られてくるスパムたちに頭を悩ませる、そんな無駄な時間とはおさらばできていました。
しかし、「Akismet」からすると、スパムかどうかよくわからないコメントというものも当然ながら存在します。
そういったものはいったん保留扱いということになるのですが、これは一定期間(15日間)が過ぎると自動で削除されることになっていて、ひょんなことからそれを知った私は、じつは判定ミスもあるのではないかと思い、「Akismet」の設定を変更することにしたのです。
もしかすると、ふつうのコメントでもスパムとして削除されてしまうこともあるのではないかと考え、もともと設定してあった自動削除から、一度スパムを専用のフォルダに振り分けるといった設定に変更し、スパムと判定されたものは目視で確認することにしたわけです。
ところが、これを変更して数か月間が経過しても、スパムボックスはゼロのまま。
スパムとして判定されたコメントの件数は月に40~50件ほどカウントされていたので、スパムがきていないということはまずないでしょう。ようするに、設定の変更が反映されていない? ようだったのです。
こうなると、スパムではないコメントが削除されているかどうかを確認することができなくなってしまい、それはそれでもどかしかったので、私はその答えを求めて公式ページへ。
すると、そこで見つけてしまったのです。利用規約の変更らしきものを……。
広告を張るサイトでは無料で利用はできない
「Akismet」を利用するためには、「APIキー」という利用コードのようなものを入手する必要があり、これは無料で取得することができます。利用条件も以前はとくになかったと私は記憶しています。
ところが、APIキーの取得画面を見ていると、なにやら見たことがない文字列を私は発見しました。
そこには、このように書かれていました。
- 私のサイトには広告がありません
- 私は自分のサイトで製品やサービスを販売していません
- 私は自分のサイトでビジネスを宣伝していません
上記の条件を確認のうえ、チェックをするようにと。
ようするに、個人のサイトでの商用利用、たとえば「Google Adsense」などの広告を設置するとなると、無料で「Akismet」を利用することはできなくなってしまったのです。
2017~2018年ごろはそんな規約はなかったはずなので、おそらく2019~2020年ごろに変更、というか値上げしたのでしょう。
年間1500円を支払えば、広告を設置するなどしていても、新規でAPIキーを発行することができるようになっていました。
なお、こんなことになっているとはつゆほども知らなかった私は、利用規約に違反していたことになるので、なんの通知もなかったとはいえ、違反の罰金を払わされることになるのではないかと思い、さらに公式ページを読み進めていくと、
無料のキーは個人の非営利サイト専用です。例外はありません。サイトに広告またはアフィリエイトリンクがある場合……サイトは商用と見なされます。これらの条件に違反すると、通知なしにサービスが直ちに停止されます。Akismet help
とのことで、ひとまず罰金を払わされることはないようでしたが、発見しだいサービスが停止されることになっているようです。
個人サイトの場合は年間1500円を支払えば、おそらくこれまでどおり利用できるようでしたが、正常に機能していない感が否めないので、この際だということで、私は別の方法を模索することにしたのです。
コメント欄は「Throws SPAM Away」で対策
コメント欄をノーガードで放置しておくと、スパマーに荒らされるので、なにかしらの対策を取らなければなりません。
その基本的な対策として「コメントを承認制にしておく」というものがありますが、スパムは確認して消す作業が大変なので、そもそも送られてこないようにしなければならないのです。
そこで、手始めに私は、Webサイトを外敵の攻撃から保護してくれ、以前から利用している「SiteGuard Wp Plugin」の、画像認証をONにしてみることにしました。
スパマーはいかがわしいツールやプログラムを駆使して攻撃してくるようなので、画像認証を設置しておけば、簡単にはスパムを送りつけられなくなると思われたからです。
しかしこれが、私がコメント欄をいろいろといじっているせいか、お名前と内容のあいだという変な場所に表示されるようになってしまい、しばらく眺めていると画像認証はやはり面倒くさいと感じたため、ひとまず却下。
なにかいいものはないかと探していると、「Throws SPAM Away」というプラグインを発見したので、ためしにこれを使ってみることにしました。
Throws SPAM Awayは国産のスパム対策プラグイン
「Throws SPAM Away」は国内で開発されたプラグインで、基本的にインストールして有効化するだけで、コメント欄から送信されたスパムが自動で消去されます。
基本的な機能としては、コメントの名前欄・本文のいずれにも日本語が入っていないものはスパムとしてはじかれる、つまり英語だけのコメントはスパム扱いとなるというもので、ほぼ海外からしか送られてこないスパムに対しては強力な効果を発揮します。
ただし、細かく設定することもできるのですが、このプラグインには懸念される点が1つだけ。かつての江戸時代にタイムスリップするとでもいいましょうか、外国語のみのコメントはすべてはじかれるので、ブログがまるで鎖国のような状態となってしまうのです!
いまや翻訳機能を使用すればいくらでも海外の記事を読むことができるというのに、海外からのコメントは実質的に完全排除。これはゆゆしき事態です。
しかしながら、私は思ったのです。
海外からのアクセスがあったとして、一部の勉強熱心な外国人はそのまま読んでくれるかもしれませんが、基本的にはブラウザの翻訳機能を使うと思いますし、それに海外の個人サイトにわざわざコメントを残すくらいの人であれば、コメントも翻訳機能を使って日本語に変換するくらいはわけなくやってのけるのではないかと。
私たちがイメージする「鎖国」は、完全封鎖のようなものだと思いますが、じつはいくつかの国とは外交があったことから、これは一般人の渡航を禁止するなどした「海禁政策」だったのではないかと歴史が見直されてきているとも聞きます。
ようするに、日本語に変換すればふつうに外国人でもコメントができるので、このプラグインは鎖国ではなく、これでいいのではないか、と思ったということです。
このように、コメント欄の下に注意書きを挿入できる機能もついていますし、私の場合はいずれ、コメントを送信してもらってから反映されるまでのタイムラグについて書いておかなければならないとも思っていたので、ちょうどいい機会でした。
/*コメント下文言*/
p#throwsSpamAway{
line-height: x.x;
color: #xxxxxx;
font-size: xxpx;
}
なお、この文言は上記のようにフォントサイズなどを変更することができるので、いじりたい場合はスタイルシート(css)に書いておくといいでしょう。
問い合わせのスパム対策は「reCAPTCHA」を導入
当ブログでは「Contact Form 7」という、こちらも国産のプラグインを利用することで問い合わせフォームを設置しているのですが、これもノーガードで放置しておくと、スパムの通知で昼夜問わず携帯が鳴り続けることになるので、対策を打たなければなりません。
そこで、私はひとまず、「Contact Form 7」に標準で実装されているチェックボックスをフォーム内に設置してみることにしました。
これの実装の仕方は簡単で、フォーム編集画面の「承諾確認」というタブから文言を入力して挿入するだけ。
これでスパマーからすればチェックを入れるという手間が増えるので、機械的に送られてくるスパムも、そうやすやすとは送れなくなるというわけです。
ところがどうでしょう、作業を終えた夜中の2時前、携帯がトゥルリンと鳴り、スパムメールを受信したのです! まさかの作業を終えた5分後のことでした。
これはいけません。私は次の手段として、Googleが提供している「reCAPTCHA」というツールを導入することにしました。
Googleの「reCAPTCHA」と「Contact Form 7」を連携する方法
Googleが提供している「reCAPTCHA」とは、悪質なスパムなどの攻撃からWebサイトを守る機能を持ったツールで、Googleのアカウントがあれば無料で利用することができます。
今回はこのツールで問い合わせフォームを守ってもらうことにしたので、その手順をご紹介します。
「reCAPTCHA」と「Contact Form 7」と連携させる手順もそこまでむずかしいものではありません。
まずは「reCAPTCHA」のトップ画面にアクセスし、管理コンソール(Admin Console)をクリック。Googleのアカウントでログインを行います。
すると、登録画面に移行するので、任意のラベル、「reCAPTCHA」のタイプ、サイトのドメインを入力します。
「reCAPTCHA」のタイプは「v3」が新しいもので、これは9マスの中から車を選択してくださいといった画像認証などが必要ない自動タイプとなっているので、私は「v3」を選択しました。
ラベルは「v3」というと、仮面ライダーかエウレカセブンのニルヴァーシュがぱっと思い浮かびますが、あとでサイトの集計結果を見ることができるので、どのサイトに設置するかわかりやすいものにしておいたほうがいいでしょう。
必要事項を入力したら利用条件に同意し、下にある「送信」というボタンをクリックします。
そのあとすぐに、「reCAPTCHA」を利用するためのキーが発行されるので、これをコピーするか、ブラウザをそのままにしておくかしておきます。もちろんこのキーは、あとから管理画面で確認することもできます。
次に、「reCAPTCHA」を問い合わせフォームだけに設置するために、「Invisible reCaptcha」というプラグインをインストールし、有効化します。
WordPressの「お問い合わせ → インテグレーション」からでも「reCAPTCHA」を有効化することができるのですが、それをするとサイト全体に保護が適用されてしまうので、お問い合わせページだけを保護したいのであれば、このプラグインが必要となるからです。
「Invisible reCaptcha」のインストール後は、設定画面を開き、先ほどのキーを入力。言語、そしてバッジの位置を選択します。
バッジの位置は「Inline」を選択しました。
そして、設定画面いちばん下にある「Contact Forms」を選択し、設定欄いちばん上の「Contact Form 7」にチェックを入れ、「変更を保存」をクリック。
これでお問い合わせフォームにのみ「reCAPTCHA」のバッジが表示されるようになり、サイトの保護が完了しました。
今回行ったスパム対策は以上です! いまのところスパムは、1通も届いていないですよ。
今回のまとめ
・コメント欄は「Throws SPAM Away」がグッド
・問い合わせフォームは「reCAPTCHA」がおすすめ
スパム対策プラグインの定番「Akismet」は、たしかにスパム退治には大活躍するので助かっていたのですが、捕獲したスパムをフォルダに振り分けるという機能が働いていないようだったので、残念ながら有料プランを利用することは見送ることにしました。
それに、コメント欄には注意書きを表記することができましたし、問い合わせフォームも「v3」が保護してくれているので、以前よりもユーザビリティは上昇したような気もします。
外国人のコメントの件も注意書きがあるので、残したいと思うのであれば、翻訳して日本語で入力してくれることでしょう。同じく「Akismet」の規約変更でお困りの方は、けっこういいと思うので、スパムアウェイとリキャプチャの利用を検討してみてください。
ブルートフォースアタックに注意!
→【不正アクセス】ブログに限らずパスワードとセキュリティは強化しよう
Invisible reCaptchaを使うのはやめました
→ Invisible reCaptchaでも「JavaScript」は全ページに読み込まれていた?
コメント(確認後に反映/少々お時間をいただきます)