GoogleフォームでPW認証の落とし穴
URLを知っていれば閲覧できるコンテンツ(例:限定公開の動画URL)に対して、誰がアクセスしたかを管理できないか相談されたことがあった。Googleフォームをパスワード認証っぽく使う方法と、思わぬ落とし穴について紹介する。
Googleフォームをパスワード認証っぽく使う
もちろんURLで遷移する先にGoogle Analyticsが仕込めるのであれば、パラメータ付きのURLを連絡して、アクセス解析をかけるのも有効だろう。
遷移先にGAが仕込めない場合には、Googleフォームをパスワード認証っぽく使うことができることが以下の記事で紹介されていた。
要約すると、記述式の設問を「必須」に設定し、「回答の検証」としてパスワードと一致することをチェックし、一致した場合に限り次の画面を見せるというもの。
今回は誰がアクセスしたのかを知りたいので、個人を識別する設問と、パスワードのチェックを入れれば良いだろう。試しにつくってみたものを貼る。
会員番号はアルファベット1文字+数字6桁にしたので、例えば「S123456」を入力すれば通る。以下の正規表現を設定している。カラクリを知ってしまえば適当な番号を入力されてしまうが、個別に連絡しておけば入力してもらえる。
[a-zA-Z][0-9]{6}
合言葉は「odapethlove」とした。文字列の完全一致がなかったので、こちらも正規表現で指定している。
^odapethlove$
総当たりで指定すれば破れる意味で脆弱ではあるけれど、パスワードっぽい雰囲気は出ているだろう。
リンク元は「フォームにパスワードをかける」意図だったので、ページを区切ってアンケートを続けていた。私は誰が観たかを管理したかったので「会員番号」として入力させて、送信後のメッセージで視聴URLを表示した。
設定箇所は、設定→プレゼンテーション→確認メッセージである。
フォームでID/PW入力させる落とし穴
上に掲載したフォームは「会員番号」「合言葉」としたのには理由がある。当初「ID」「パスワード」という項目名にしていたら、利用規約への違反と見なされてしまった。
https://support.google.com/docs/answer/148505?visit_id=637671865290564467-2680179005
詳細について調べようにも、上から下までいろいろ書いていて断定できないけれど、おそらく「フィッシング」に該当したのかなと思う。
フィッシング
このサービスをフィッシングに使用しないでください。これには、パスワード、家計に関する情報、社会保障番号などの機密データを求めたり収集したりすることが含まれます。
つまり、フォームそのものでID/PW認証する意図だったけれど、別のサイトのID/PWを騙して収集しようとしていると判定されてしまった。
おそらく、パターンで自動検知しているので、「会員番号」「合言葉」であったり、「座席番号」「アクセスコード」であったり、表現を変えると今のところ違反とはみなされていない。
***
Googleフォームにこんな使い方もあるんだという共有として、何かのお役に立てば幸い。