reCaptchaでブログサイトをスパムから守る方法/wordpress

recapcha_eyecatch WordPress
この記事は約21分で読めます。

備忘録_52 / wordpress_21

wordpressのブログは、閲覧者が投稿記事に対してコメントを付けられる「コメント機能」や、他のブログサイトへのリンクを張った際に、リンク先の相手に対してリンクを張ったことを通知する「トラックバック機能」が存在しています。今までセキュリティ対策がガバガバだったのでこれらの機能をOFFにして運用してきましたが、今回はこれらの機能を立ち上げます。

スパムについて

今ここで言うスパムとはポークランチョンミートの缶詰の事ではありません。
沖縄名物のスパムおむすびはとても美味しいです。あれは良い物です。
スパムとは頼んでもいないのに勝手に送りつけてくる迷惑メール(junk mail)の事です。その目的は会員制出会い系サイト、アダルトサイト、マルチ商法、販売詐欺などの宣伝がほとんどです。
今どきこんな子供だまし、子供でも早々引っかかるとは思えない様なチープな勧誘方法ですが、何故、この様な商売が成り立つのかと言うと、ボット(=ロボット)プログラムにより一定のタスクや処理を自動化出来るからなのです。

膨大な量のメッセージを手当たり次第に送り付ける作業を、オートマチックで且つ低コストで行える為、10万通に1通のヒット率でも採算が取れると言います。儲かるうちはスパムを根絶することは困難であるといわれております。

因みにコンピュータ用語のスパムの語源も、やはりスーパーで売っているポークランチョンミート缶のSPAMに由来し、最初はハッカー文化の中だけで使われていた隠語でした。
スパムの缶詰は頑丈で保存性に優れ、備蓄食料として適している上、そのまま食す事が可能であり、カロリーも高い。このため、主に軍需物資として需要があり、第二次世界大戦や朝鮮戦争・ベトナム戦争でも戦闘糧食として用いられました。
ヘリの上から地上に食料物資が投下され、毎日のように兵士の下に送られてくるスパムの缶詰。
昨日もスパム、今日もスパム、明日もスパム、スパム、スパム … … と、兵士たちはそうぼやいたと言います。

不気味に鮮やかなピンク色の肉の塊りランチョンミート、しかしこの味、どこかで食べたことがあるような懐かしい味がします … …というか、お弁当のタコさんに使われる赤ウィンナー(ポールウインナー)の中身なのだそうです。

Akismet アンチスパムプラグイン

スパムメッセージは、サイトの管理者である私にも、このサイトの記事を読みに来たお客様にも目障りになります。
スパム行為の放置は客離れに直結します。そうは分かっていても、真面目に対処をするとなると手間ばかりかかる厄介な代物です。何故なら相手は疲れを知らないロボットだからです。

そこで、目には目を、ロボットにはロボットで対抗しましょう。それがアンチスパムです。

Akismet pulgin
[図_1]

[図_1]
アンチスパムの定番といえば、真っ先にAkismet Spam Prorection という wordpress公式プラグインが挙げられるでしょう。

Akismetは、スパムコメントや良からぬトラックバックを自動的に判別して、フォルダ―分けをしてくれるプラグインです。
Automattic社の作ったwordpress公式プラグインでして、実はwordpress本体に予めプリインストールされておりますが、WordPress.comにユーザー登録してAPIキーを取得してアクティブ化しないとプロテクション機能は働きません。

WordPress.com – Akismet stop spam.

Akismet公式ウェブサイトはこちらになります。また、Akismetの登録にはWordPress.comのアカウント登録が必要になります。コチラ前回の記事も併せてご参照下さい。

Akismet利用するまでの手順
WordPress.comにユーザー登録する。
AkismetでAPIキーの発行を受ける。
プラグインにAPIキーを入力してプロテクション機能を有効化する。

Akismet.com
[図_2]

[図_2]
Akismetの利用にあたって一つ問題があります。それが赤枠の部分なのですが、どうやら去年あたりから利用規約にこの一文が追加されて無料版での商用利用が不可になりました。
商用利用しない個人的な利用に限って今まで通り無料で使えます。
しかし、インストーラー版のワードプレスを使っているの多くは何かしら仕事で利用している人が多いと思われますのでこれは厳しいですねェ。

Is my site commercial?
If your site has advertising or affiliate links, sells products or services, solicits donations or sponsorships, or is in any way related to a business or educational organization — your site is considered commercial.
While we rely on customers to self-select their plan, we do perform periodic audits of accounts to ensure the correct plan was selected.

私のサイトは商用ですか?
お客様のサイトに広告やアフィリエイトのリンクがある場合、製品やサービスを販売している場合、寄付やスポンサーを募っている場合、または企業や教育機関に何らかの形で関連している場合、お客様のサイトは商業的なものとみなされます。当社では、お客様にご自身でプランを選択していただいておりますが、正しいプランが選択されているかどうか、定期的にアカウントの監査を行っています。

Advanced noCaptcha & invisible Captcha
[図_3]

[図_3]
私のサイトは個人利用に当たると思っていますが、ページの先頭にAmazonの商品リンクとしてスパムの画像を貼っています。説明の流れの中でスパムの画像が必要になり、画像を探すことが面倒だからAmazonからリンクを引っ張ってきたワケです。このリンクよりもし誰かスパムを買うならばアフィリエイト報酬が発生するとは思いますが、金額にして何円、何十円程度の収入です。私のブログサイトが商業ベースに乗っているかと言えば NO です。赤字も赤字大赤字です。
しかし、このサイトはアフィリエイトサイトか否かと聞かれるなら??
そこでAkismetの代用になるアンチスパムがGoogleのreCAPTCHAです。

Google reCAPTCHAについて

reCAPTCHAもアンチスパムですが、Akismetの様な従来のアンチスパムとは設計コンセプトからして異なります。皆さんもGMailやYahooMailの迷惑メールフォルダを使っていると思いますが、これらのアンチスパム機能は迷惑メールと思わしきメールを予め仕分けしておいてくれるだけものであって、最終的に消すか消さないかは個々の判断に委ねられます。事実ときどき重要なメールが迷惑メールフォルダに仕分けされ紛れ込んでいる時があったりします。
Akismetのアンチスパム機能も基本的にそれと同じ仕組みの物です。


その点、reCAPTCHAはその最終チェックの作業すら要りません。
完全にオートマチック(お任せモード)で四六時中あなたのwebサイトをボットの侵入から守ってくれます。
では、次にその仕組みを見て行きましょう。
現代のネットはもはや魔法ですね…
タネも仕掛けも存在するのですが、
子供世代にレクチャーしようがない
現し世は夢、夜の夢こそまことぞ

reCAPTCHA v1
2007年 
v1

イラッとする例のアレです。
こんなゲシュタルト崩壊読めなくて当然です!
… … よ、
よ、読めちゃったんですと??

一番最初に登場した初期のreCAPTCHAです。この様な画像が表示されて読み方の入力を求められた事はないでしょうか?当時のグーグルは、Googleブックスなる新規事業を始めるべく書籍を電子化するため本をスキャナーで読み取りスキャンを行っており、OCRソフトウェア(文字認識ソフト)が認識できなかった文字を人に判別させて人工知能AIに機械学習させていました。文字が読めて入力できる、つまりそれはボット(=ロボット)でなく人間であるという事です。これにより、何十年もかかる紙書類のデジタル化をたったの2年で終えたと言われています。

つ・ま・り! 私たちは「タダ働き」させられていたのです!
reCAPTCHA v2
2014年
checkbox


2014年
invisible
v2 checkbox

「ロボットでありません」に✅した後、
さらに、画像認識テストに進みます。

Invisible

AIによるスコア判定でbotアクセスを除外
して怪しい場合は画像認識テストに進む。





checkbox

リキャプチャバージョン2には設計概念が異なるInvisible、Checkbox、グーグルスマホ専用のAndroidと、3つのタイプがありました。当時のグーグルは完全自動運転カー「Google Car」の開発を秘密裏に進めており、人工知能AIによる画像解析技術を確立させる必要がありました。
ロボットでないと自己申告してからタイル選択するcheckbox。スコア判定によりタイル選択するinvisible。
v2はどちらも上記の様に2ステップからなります。これはcheckboxとinvisibleを比較検証する為に用意されました。
invisibleの精度がどれほどの物かを評価するために、checkboxが存在しております。… と言う説明わかるかしら …。

ま・た・も・や! 私たちは「タダ働き」させられていたのです!
reCAPTCHA v3
2018年
invisible
Invisible v3

チェックボックスは完全に省略されました。
AI神のみぞ知る世界に突入!

リキャプチャバージョン3は、v2_invisibleの改良型です。面倒なチェックボックスもタイルチェックもオミットされました。
2021年現在、v2_checkboxと、v3_invisibleのどちらのサービスも使えますが、チェックボックスを付ける煩わしさの無いバージョン3の方がバックグラウンドでユビキタスに動作してユーザビリティが高いと思います。

そ う で す! 私たちは「もうタダ働きしなくて良い」のです!
invisible センサーの仕組み(オフトゥンの脳内妄想)
v3 sensor

v3はwebサイト内での挙動を監視します。ある人はページを開いた瞬間に、ここには探したい情報が無いであろう事を察知して即閉じしてしまいます。ある人は記事を雑把に流し読みしたり、またある人は目を凝らして熟読したりします。どれも正しい使われ方であり何ら問題ありません。インターネットなんて所詮人間にとってただの便利道具に過ぎません。問題はサイト運営者にとって厄介者でしかないスパム(ボット)をどのように弾くかなのです。v3は人間でもロボットでも全てのリクエストを素通し(応答)します。その様なやり取りを通じてwebサイト内でのそれら挙動をつぶさに監視して「人間らしさ」のスコアを算出します。デフォルト(初期値)では【0.5】を境にして人とボットを判別します。この開発側とハッカーの競争は永遠に終わる事の無いいたちごっこの関係にあります。

インターネットが商用利用される以前、その前身は他国からのミサイル攻撃に備え、アメリカ国防総省の機密文書を各重要軍事拠点に分散所持する為にメインコンピューターを相互接続する為の軍用ネットワークでした。
クラッキング技術もセキュリティ技術も、攻防とそのどちらも重要な技術ですが、何より欲しい物はその中身、情報(データ)です。アメリカCIAで使われる諜報技術にOSINT(open-source intelligence)というものが存在します。

オシントは「合法的に入手できる資料」を「調べて突き合わせる」手法である。情報源は政府の公式発表、マスメディアによる報道・インターネット・新聞・書籍・電話帳・科学誌その他を含む。具体的には、対象国の方針を割り出すために、対象国の新聞社交欄、ニュースの断片、人事の異動発令、発表報道などを丹念に集積し、分析するといった手法である。
細かいデータを少しずつ集めて分析するだけでも、相当な精度の情報が得られることがある。
via:wikipedia_オープン・ソース・インテリジェンス

実にCIAのお仕事の95%はOSINTだというのです。ご覧のように私のブログサイトは取るに足らぬ情報しかないのですが、それも含め数多ある膨大な数のサイトを総ざらい網羅する事で日本全体が明け透けに見えてくるのだそうです。
意外ですよね、007ジェームズ・ボンドのようなスパイやエージェントが華麗にトップシークレットを盗みだす様なド派手な世界(
HUMINT)や、金盾・エシュロンといった情報傍受技術SIGINT)は、仕事全体のほんの5%程で、それは95%から浮かび上がった情報の裏付けを取る為の確認に必要な情報収集の任務だったりします。
情報を整理する事が如何に大切かわかるような気がします。逆にガセネタをがっちり掴ませることが出来れば hehehe
…… いえ、それは既に超有能なハッカーですから。というか話が本線から大きく脱線してしまったでござる、
orZ

reCAPTCHA v3の導入方法

Google reCAPTCHAの登録の仕方

今回、インストールするadvanced nocaptcha & invisible captchaプラグインですが、こちらはサードパーティー製のプラグインとなっており、スグにそのまま使えるわけではありません。まずはGoogleのreCAPTCHA公式ページでユーザー登録をしてAPIキーを取得します。

reCAPTCHA official
[図_8]

[図_8]


 [Get Started with Enterprise] 
では無く、赤枠の部分、
v3 Admin console をクリックします

Enterprise版は有料プランです。
FAQによると、使用頻度が1秒間に1000回、1ヶ月に100万回を超えると料金が発生する仕組みのようです。

Google login
[図_9]

[図_9]
ログインフォームです。Googleのアカウントを持っていれば、それを使ってログインできます。

Googleアカウントの登録方法はこちらにも少し書いてあります。

情報の入力
[図_10]

[図_10]
reCAPTCHA登録フォームです。

適当にラベル(名前)を付けます

reCAPTCHA v3 を選択します。
利用するreCAPTCHAのタイプを選択します。v2とv3が使えますが、ここではv3を使って説明しています。

ドメイン名を入力して下さい。
http://www.の部分は省略します。

情報の入力2
[図_11]

[図_11]

利用許諾に同意します。

アラートをオーナーに送信する。
設定エラーや不審なトラフィックの増加など、サイトで問題が検出された場合にeメールが届きます。

シークレットキー
[図_12]

[図_12]
サイトが登録され、サイトキーとシークレットキー、2つのAPIキーが発行されました。文字列の先頭こそ同じですが後尾は文字が異なっております。同じものではないので注意して下さい。

このページは開いたままにして下さい

AMP有効化ページ
[図_13]

[図_13]

③ 設定に移動をクリックすると、
更に詳細設定が可能です。
wordpressをAMP(Accelerated Mobile Pages)で動作させたい方はこのチェックボックスを付けます。

当ブログサイトではまだ導入できておりません。

advanced nocaptcha & invisible captchaの設定方法

reCAPTCHA install
[図_14]

[図_14]
次はwordpress側の設定です。

[プラグイン] → [新規追加]です。

検索ボックスに[reCaptcha]と入力してenterキーを押します。

advanced nocaptcha & invisible captchaのプラグインをインストールします。

一昔前は、Invisible reCaptcha for WPと言うプラグインが評価が高く一番使われておりましたが、約2年ほど前から更新が止まっており、現在は、こちら advanced nocaptcha & invisible captcha の方が人気があるようです。[reCaptcha]と入力して[nocaptcha]が検索の一番上に出て来てしまうのですから、もうこちらに乗り換えで宜しいのでないかと思います。

advanced nocaptcha & invisible captcha
[図_15]

[図_15]
wordpressダッシュボード画面です。管理ツールバーより、

[設定] →
[advanced nocaptcha & invisible captcha]をクリックします。

advanced nocaptcha設定1
[図_16]

[図_16]
advanced nocaptcha設定画面です。

reCAPTCHAタイプv3を選択

[図_12] のサイトキーとシークレットキーをまんまコピペします。

有効化されたフォームの設定
ですが、ログインフォームとコメントフォームは必ず有効にして下さい。

[パスワード紛失フォーム] などの項目は、wordpress管理画面にログイン後、[ユーザー]→[プロフィール]から行いますが、ログインしたのは私以外にあり得ず、ロボットであるハズはないのでもしかしたら要らないかもしれません。いざパスワードリセットしようと思ったら、ロボットと認定されて弾かれるなんて事にもなりかねないので…^^;
[bbpress 新規トピック] とは、bbpressという自サイトに掲示板やフォーラムを立ち上げるプラグインがあり、この入力フォームを有効化できるようになります。以降の項目はプラグインを入れて無ければcheckする必要はありません。
[BuddyPress] とは、SNSを使って会員制のコミュニティをつくるプラグインです。
[woocommerce] とは、ネットショップを開店するために使うオンライン決済用のプラグインです。

advanced nocaptcha設定2
[図_17]

[図_17]
その他の設定画面です。

こちらはこのままデフォルト(初期設定)のままで良いと思います。

[変更を保存] をクリックします。

[エラーメッセージ] タイルの選択を間違えた時に表示させるエラーメッセージを編集できるようですが、
v3ではタイルの選択画面が出ないので、エラーメッセージも表示されません。
[captchaの言語] 自動検出で日本語になっていると思います。
[v3スクリプト読み込み] 精度の高い解析が行えるように全てのページでスクリプトを読み込む。
[Captcha スコア] デフォルト(初期値)は「0.5」ですが、足切を行う精度が低い場合は調節します。
[ホワイトリスト登録済みIP] 固定IP回線をお使いならば、自身の入力操作は監視対象外にできます。
[ログインで非表示] サイトにログインしているユーザーはロゴマークが表示されない。

reCAPTCHA launched
[図_18]

[図_18]
reCAPTCHAが有効化され稼働を始めました。サイトの右下にスクロール追従型のマークが表示されます。

ブラウザプラグインのAdBlockを使い、googleとの通信を妨げてみたところ、ブラウザの表示上ではマークは消えました。
この状態でコメントフォームに入力し送信したところ、書き込めませんでした。

reCAPTCHAのカスタマイズ方法

reCAPTCHA公式supportページより

こちらの公式マニュアルを読みながら次の作業を進めて行きます。日本語のページを探したのですが見つからなかったので英語です。

まず、この画面を上下にスクロールさせるときに追従して付いてくるreCAPTCHAのマークが非常に目障りです。

‘d like to hide the reCAPTCHA badge. What is allowed?
You are allowed to hide the badge as long as you include the reCAPTCHA branding visibly in the user flow. Please include the following text:

This site is protected by reCAPTCHA and the Google
    <a href=“https://policies.google.com/privacy”>Privacy Policy</a> and
    <a href=“https://policies.google.com/terms”>Terms of Service</a> apply.

For example:
    recaptcha@example.com               
    ……                            
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

日本語訳 reCAPTCHAのバッジを非表示にしたいのですが。許されますか?

日本語訳 :ユーザーが往来する流れの中でreCAPTCHAのブランドを目立たせることができれば、
      バッジを隠すことができます。HTMLに以下のテキストを入れてください

      This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.
日本語訳 このサイトはreCAPTCHAで保護されており、Googleのプライバシーポリシーと利用規約が適用されます

と、この様にマークは消しても良いように書かれております。但し、バッチを表示させておくメリットもあります。例えば、GoogleのreCAPTCHAサーバーか、ネット回線に何らかのトラブルが発生した際はマークの表示が消えるので一目瞭然でそれがわかります。
… … が、やっぱり邪魔ですので消しましょう。

styleCSSのカスタマイズ

⚠️必ずバックアップを作成して下さい。

CSSは失敗すると、画面が真っ白になります。

こちらが今回使用したプログラムで、このままコピー&ペーストで使えます。

/* recaptchaのマークを消す 開始 */
.grecaptcha-badge {
    visibility:hidden;
}
/* recaptchaのマークを消す 終了 */

プログラムの説明
recaptchaのバッジを非表示にします。visibility:hiddenは名前の通り、要素は存在しているが見えない状態。

外観・テーマエディター
[図_19]

[図_19]
管理メニューのダッシュボードより

[外観] →
[テーマエディター] と進みます。

スタイルシート
[図_20]

[図_20]
テーマファイルを改造するときのお約束ですが、必ず子テーマを弄ります。説明はこちら

スタイルシート(style.css)をクリックします。
改変するプログラムを、一番下の行にコピペで付け加えます。
最後は忘れずに [ファイルを更新] をクリックします。

コメントフォームのカスタマイズ

For example:
    recaptcha@example.com               
    ……                            
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.


次はブランディングの表示です。
見本例でのブランドが表示は、メールとパスワードの入力ボックスの下にされているようです。

ではこの例と同じようにしましょう。

こちらが今回使用したプログラムで、このままコピー&ペーストで使えます。

<p><span style="font-size: 10px;">
This site is protected by reCAPTCHA and the Google
 <a href="https://policies.google.com/privacy">Privacy Policy</a> and
 <a href="https://policies.google.com/terms">Terms of Service</a> apply.
</span></p>

プログラムの説明
英語を読むと頭が痛くなりまね。目立たない様に文字を小さくする配慮をしました。(※個人的感想です)

cocoon・cocoon
[図_21]

[図_21]
管理メニューのダッシュボードより

[Cocoon設定] →
[Cocoon設定] と進みます。

コメント入力案内
[図_22]

[図_22]
Cocoon設定の画面です。

[コメント]タブをクリックします

マウスをずっと下の方にスクロールさせるとコメント入力案内メッセージという項目があり、ここを設定します。

[テキスト]タブをクリックします
上記のHTMLをペーストします。
  [変更をまとめて保存] します。

コメント入力欄
[図_23]

[図_23]
Offtoon blogの各投稿記事ページ最下に設置されている[コメント]欄です。
この様にGoogle reCAPTCHAのブランドが小さく表示されています。

また画面右下に表示されていたreCAPTCHAのマークも消えてます。

最低限ではありますがスパム対策が出来ましたのでコメント欄を解放します。(このページの最下部にあります。)
もしよろしかったらコメント等を残して頂ければ大変励みになります。今回は以上です。

Eyecatch image:houzz.com,1880s brownstone/SilviaP_Design,Dina Dee,DrSJSによるPixabayからの画像

  1. tesutesu書き込みテストです。

    • 特に問題も無いようですね。よろしかったら是非お使い下さいませ^^

  2. 皆さんこんにちは。お布団の母でございます。
    この様な形で恥ずかしい限りの駄文を世に披露する事になってしまい、皆様方に於かれましては、私がどれほどお詫びをしてもし切れないほど大変申し訳なく思っております。
    渡る世間は誰だって辛いものでございましょう。
    かく言う私だって、辛さをじっと耐え忍んで身を粉にして働いて、働いて、必死に働いて、この子を一人前に育ててきたつもりです。ですが、この子こんなに惨い仕打ちあんまりです。
    こんな世間様に取り返しのつかない様な恥を晒す事になってしまい、もはやなんと申し上げて良いのやら後悔の念が付きません。あの世でご先祖様に合わせる顔もありません。
    こんな私を哀れと思って下さるなら、私に免じて皆様には寛大な許しを下さいますよう重ねてお願い申し上げます。