用語
まずはログイン関連の用語を把握しておきましょう。
サインアップ
ユーザーのアカウントを作成することです。
サインイン、ログイン、ログオン
ログインすることです。
ログイン機能の方式
ユーザー管理機能を実装する方法としては下記の2種類が考えられます。
- ユーザーが自らサインアップしてユーザー認証する方式
- 管理者が管理者機能でサインアップをしてアプリを利用させるようにする方式
ユーザーが自ら登録してユーザー認証する方式
この方式は、一般の個人向けに提供する場合によく使われます。
ユーザーID
- ユニークにします。
- 16文字以内にしてあまり長すぎるIDを避ける。
パスワード
- 最小文字数を8文字以上にする。
管理者が管理者機能でユーザー登録をしてアプリを利用させるようにする方式
この方式は、特定の企業等のグループに属しているシステムの場合によく使われます。この方式のアプリを作る場合は管理者機能を実装する必要があります。管理者かどうかはユーザーテーブル等に管理者フラグとかのカラムを設定して判定させるようにします。
認証方式
そもそも今はセキュリティ要求が上がっておりパスワードだけあれば良い時代ではなくなっています。
二段階認証
二段階認証とされていても認証の要素は一つだけの場合もあります。
具体的には、まずは「ユーザーID/パスワード」を入力し、その後に「秘密の質問」での認証を行うなどといった具合です。
メリット
「ブルートフォース攻撃」や「総当たり攻撃」などの攻撃の突破には耐えれる。
デメリット
所詮は、「秘密の質問」なども知識ベース認証の一つではあるので、知識が流出してしまった場合には対処できない。
多要素認証(MFA)
二つ以上の要素によって行う認証です。要素とは「知識」、「生体」、「所有物」です。
具体的には、まずは「ユーザーID/パスワード」を入力し、その後に所有しているスマートフォンのワンタイムパスワードを使って認証を行うという具合です。
メリット
仮にID/パスワードが第三者に流出してしまったとしても、他の要素での認証も必要なため簡単にはログインを許さないです。
デメリット
スマートフォンを紛失した場合などに本人でさえログインできなくなる。(管理者へ問い合わせが必要になる。)
CAPTCHAとは?
Webサイトはbot(悪意のあるプログラム)によって様々な攻撃に晒される。
- 自動的に大量のユーザーを作成
- 不正ログイン
そこでサイト側に「人間によるものなのか?botによるものなのかを判別する仕組み」が必要になりできた技術です。注意点としては本人確認に使うものではなくあくまでbotによるアカウントの作成やログインを防ぐためのもの。
reCAPTCHA(リキャプチャ)
Googleが提供しているサービス。よくネットで見る「私はロボットではありません」というものは大抵これ。
バージョン1
画像から文字を読み取らせて入力させる。
なお、OCRに読み取らせないように文字を歪めたり、背景を汚したりして「機械には読めないが人間には読める文字」を意図的に演出する工夫がされている。近年は機械学習やAI開発が発達してきたことにより歪んだ文字も読み取れるようになってきた。なので、このバージョンは使われなくなってきている。
バージョン2
チェックを入れた段階でbotか自動判別。botの可能性がある場合は画像から選ばせる。
サイトに訪れた段階でbotかどうかの判別が始まっている。判断基準は以下。
- スクロールのスピード
- クリックの頻度や回数
- マウスカーソルの動き
ただ、このバージョン2も音声入力などから破られてきている。
バージョン2(invisible)
送信ボタンを押した段階でbotか自動判別。botの可能性がある場合は画像から選ばせる。
バージョン3
送信ボタンを押した段階でWebサイトのスコアを算出してbotか判別する。
この記事へのコメントはありません。