<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Captcha on ララジャパン</title>
        <link>https://www.larajapan.com/tags/captcha/</link>
        <description>Recent content in Captcha on ララジャパン</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>ja</language>
        <lastBuildDate>Tue, 02 May 2023 05:08:18 +0900</lastBuildDate><atom:link href="https://www.larajapan.com/tags/captcha/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Googleリキャプチャv2の導入</title>
        <link>https://www.larajapan.com/2023/05/02/google%E3%83%AA%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3v2%E3%81%AE%E5%B0%8E%E5%85%A5/</link>
        <pubDate>Tue, 02 May 2023 05:08:18 +0900</pubDate>
        
        <guid>https://www.larajapan.com/2023/05/02/google%E3%83%AA%E3%82%AD%E3%83%A3%E3%83%97%E3%83%81%E3%83%A3v2%E3%81%AE%E5%B0%8E%E5%85%A5/</guid>
        <description>&lt;p&gt;タイトルを見てv2とは古いんじゃないと言われそうです。しかし「私はロボットでありません」というのが好きなお客さんも要るのです。今回はGoogle reCaptchaを簡単に取り付けできるパッケージを紹介します。もちろん、v3あるいはさらにエンタープライズバージョンも将来に紹介する予定です。&lt;/p&gt;
&lt;h2&gt;サイトを登録してキーを取得&lt;/h2&gt;
Googleのアカウントをすでに持っている、そしてログインしていることを仮定して以下のURLへ行きます。
&lt;a href=&#34;https://www.google.com/recaptcha/admin&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;https://www.google.com/recaptcha/admin&lt;/a&gt;
日本語版の画面というのはないみたいですね（間違っていたらお知らせを）。
&lt;p&gt;&lt;a href=&#34;reCAPTCHA-1.png&#34;&gt;&lt;img src=&#34;reCAPTCHA-1.png&#34; alt=&#34;&#34; width=&#34;776&#34; height=&#34;1005&#34; class=&#34;alignnone size-full wp-image-7667&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;画面の赤箱部分を入力します。&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Label&lt;/strong&gt;は設定の名前なので代表する名前を入力してください。保存後に編集可能です。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;reCAPTCHA Type&lt;/strong&gt;は、ここではv2の「私はロボットでありません」（I&#39;m not a robot）のチェックボックスを選択しますが、チェックボックスなし（invisible）も選択可能です。画面の右下に表示されているのが多分にそのreCAPTCHAタイプでしょう。それから、こちらの設定は保存後に変更できません。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Domains&lt;/strong&gt;はreCaptchaを使用するサイトのドメイン名です。複数のドメインの入力が可能で自分が持っていないドメイン（例えばお客さんの）でもOKです。保存後に編集も可能です。&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;上の画面で「&lt;strong&gt;Submit&lt;/strong&gt;」ボタンを押すと以下の画面へ遷移します。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;reCAPTCHA2.png&#34;&gt;&lt;img src=&#34;reCAPTCHA2.png&#34; alt=&#34;&#34; width=&#34;776&#34; height=&#34;1005&#34; class=&#34;alignnone size-full wp-image-7669&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;サイトキーとシークレットキーが生成されています。ここでそれらをコピーして控える必要はないです。Settingの画面に行くといつでも以下のように両方とも閲覧可能です。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;reCAPTCHA3.png&#34;&gt;&lt;img src=&#34;reCAPTCHA3.png&#34; alt=&#34;&#34; width=&#34;763&#34; height=&#34;1563&#34; class=&#34;alignnone size-full wp-image-7672&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;この画面では、&lt;strong&gt;Owners&lt;/strong&gt;のところで私以外に他のユーザーがオーナーとなることも可能です。後に話しますが、不正アクセス数を含むアクセスの統計を表示する画面があるのでそれらは関係者と共有した方がいいですね。&lt;/p&gt;
&lt;p&gt;上の画面では、&lt;strong&gt;Send Alert To Owners&lt;/strong&gt;は、何か問題が起きた時に先に登録したオーナーにメールするのでチェックボックスをオンとした方が良いです。&lt;/p&gt;
&lt;h2&gt;v2のパッケージ&lt;/h2&gt;
今回の目的のためにLaravelで使用できるcomposerのパッケージはいくつかあります。
&lt;p&gt;まず、本家のGoogleから、
&lt;a href=&#34;https://github.com/google/recaptcha&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/google/recaptcha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/google/recaptcha&lt;/a&gt;&lt;/a&gt;
もちろん、これがベストなのですがバリデーションルールやフロントエンドなどの設定は自作する必要あります。自作してもそうは難しくないですけれど。
&lt;a href=&#34;https://github.com/biscolab/laravel-recaptcha&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/biscolab/laravel-recaptcha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/biscolab/laravel-recaptcha&lt;/a&gt;&lt;/a&gt;
こちら、パッケージ名にLaravelがあるくらいだから、Laravelのために作られています。Laravelのバージョン5から10まで対応しています。オプションが多く細かく指定できるようですが、私としてはちょっと多すぎでそこまで頭を使いたくありません。&lt;/p&gt;
&lt;p&gt;ということで、落ち着いたのが以下、
&lt;a href=&#34;https://github.com/thinhbuzz/laravel-google-captcha&#34; rel=&#34;noopener&#34; target=&#34;_blank&#34;&gt;&lt;a class=&#34;link&#34; href=&#34;https://github.com/thinhbuzz/laravel-google-captcha&#34;  target=&#34;_blank&#34; rel=&#34;noopener&#34;
    &gt;https://github.com/thinhbuzz/laravel-google-captcha&lt;/a&gt;&lt;/a&gt;
こちらも、Laravel特定です。バリデーションもあるし、ブレードにある関数を埋め込むだけでgoogleのapi urlも入れてくれるのでフロンエンドの作成も簡単です。&lt;/p&gt;
&lt;h2&gt;laravel-google-captchaのインストールと設定&lt;/h2&gt;
&lt;p&gt;早速インストールしてみましょう。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;composer require buzz/laravel-google-captcha
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;&amp;ndash;devがないことに注意を。&lt;/p&gt;
&lt;p&gt;config/captcha.phpを生成するために以下も実行します。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;php artisan vendor:publish --provider&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;Buzz\LaravelGoogleCaptcha\CaptchaServiceProvider&amp;#34;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;そして、.envにおいて以下を追加します。先ほどの画面からキーは取得します。&lt;/p&gt;
&lt;div class=&#34;code-filename&#34;&gt;.env&lt;/div&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-text&#34; data-lang=&#34;text&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CAPTCHA_SITEKEY=6Lc18solAAAAABF13H_BrF0t0pQ237n-KmXBFWWC
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;CAPTCHA_SECRET=6Lc18solAAAAADWvyxFaAT_XA29eV6SHi-JMb-NJ
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;さて、ブレードには以下のように入れます。表示のときには、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;{!! Captcha::display() !!}
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@error(&amp;#39;g-recaptcha-response&amp;#39;)
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;alert alert-danger&amp;#34;&lt;/span&gt;&amp;gt;{{ $message }}&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;@enderror
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;画面が表示されるときには、&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-html&#34; data-lang=&#34;html&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;src&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;https://www.google.com/recaptcha/api.js?hl=ja&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;async&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;defer&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;script&lt;/span&gt;&amp;gt;&amp;lt;&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;class&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;g-recaptcha&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;theme&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;light&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;id&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;buzzNoCaptchaId_5cfd27964f5cbd34338165f72c4675ab&amp;#34;&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;data-sitekey&lt;/span&gt;&lt;span style=&#34;color:#f92672&#34;&gt;=&lt;/span&gt;&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#34;6Lc18solAAAAABF13H_BrF0t0pQ237n-KmXBFWWC&amp;#34;&lt;/span&gt;&amp;gt;&amp;lt;/&lt;span style=&#34;color:#f92672&#34;&gt;div&lt;/span&gt;&amp;gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;ように、google apiへのurlも入れてくれます。&lt;/p&gt;
&lt;p&gt;もちろん、その画面には以下のように「私はロボットでありません」のチェックボックスが表示されます。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;927f9f8a359329c04a9d2c8bffbbb5da.png&#34;&gt;&lt;img src=&#34;927f9f8a359329c04a9d2c8bffbbb5da.png&#34; alt=&#34;&#34; width=&#34;753&#34; height=&#34;689&#34; class=&#34;alignnone size-full wp-image-7681&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;サーバー側でのバリデーションでは、以下のように&lt;strong&gt;captcha&lt;/strong&gt;を指定するだけです。&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-php&#34; data-lang=&#34;php&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$request&lt;span style=&#34;color:#f92672&#34;&gt;-&amp;gt;&lt;/span&gt;&lt;span style=&#34;color:#a6e22e&#34;&gt;validate&lt;/span&gt;([
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;email&amp;#39;&lt;/span&gt;                &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;required&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;email&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;unique:customer,email&amp;#39;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;password&amp;#39;&lt;/span&gt;             &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;required&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#66d9ef&#34;&gt;new&lt;/span&gt; &lt;span style=&#34;color:#a6e22e&#34;&gt;CustomerPasswordRule&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;confirmed&amp;#39;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;name&amp;#39;&lt;/span&gt;                 &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;required&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;string&amp;#39;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;    &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;g-recaptcha-response&amp;#39;&lt;/span&gt; &lt;span style=&#34;color:#f92672&#34;&gt;=&amp;gt;&lt;/span&gt; [&lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;required&amp;#39;&lt;/span&gt;, &lt;span style=&#34;color:#e6db74&#34;&gt;&amp;#39;captcha&amp;#39;&lt;/span&gt;],
&lt;/span&gt;&lt;/span&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;];
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;h2&gt;Googleの管理画面&lt;/h2&gt;
&lt;p&gt;最後にですが、Googleの管理画面で以下のような統計情報を見せてくれます。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;reCAPTCHA4.png&#34;&gt;&lt;img src=&#34;reCAPTCHA4.png&#34; alt=&#34;&#34; width=&#34;776&#34; height=&#34;1005&#34; class=&#34;alignnone size-full wp-image-7685&#34; /&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;青の棒グラフが「私はロボットでありません」をクリックしても、テストするための画像が表示されなくパスしたもので、緑がテストの画像が表示されましたがユーザーが問題なくパス。そして赤がテストの画像が表示されて失敗したものとなります。&lt;/p&gt;</description>
        </item>
        
    </channel>
</rss>
