プログラミングマガジン

プログラミングを中心にIT技術をできるだけわかりやすくまとめます。

  • ホーム
  • セキュリティ
  • 【Web開発】ユーザー管理機能の設計や実装、認証設計の種類
 
 
     
  • サーバー言語  
    • Python
    • Ruby
    • PHP
    • SQL
  •  
  • インフラ  
       
    • AWS
    •  
    • 基本
    • Git
  • Web
       
    • Web開発
    • JavaScript
    • Vue.js
    • React
  •  
  • 設計  
       
    • 実装設計
    • DB設計
  • 問い合わせ
  

【Web開発】ユーザー管理機能の設計や実装、認証設計の種類

11.30

  • miyabisan2
  • コメントを書く

この記事は2分で読めます

用語

まずはログイン関連の用語を把握しておきましょう。

サインアップ

ユーザーのアカウントを作成することです。

サインイン、ログイン、ログオン

ログインすることです。

ログイン機能の方式

ユーザー管理機能を実装する方法としては下記の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か判別する。

スポンサーリンク
  • 2019 11.30
  • miyabisan2
  • コメントを書く
  • Webサービス開発, セキュリティ
  • Tweets Twitter
  • このエントリーをはてなブックマークに追加
  • LINEで送る

関連記事

  1. 2020 09.14

    【セキュリティ】攻撃手法(「DDoS攻撃」、「セッションハイジャック」、「IPスプーフィング」、「インジェクション」など)、「WAF」、「IDS」、「IPS」とは?

  2. 2018 03.31

    【Webセキュリティ】ログイン認証の種類について

  3. 2018 04.07

    【Webセキュリティ】Javaサーブレットで、XSSを体験してみる。

  4. 2021 12.04

    【インフラ】The Twelve-Factor App(コンテナのベストプラクティス)、コンテナイメージ、Dockerfile、ECSタスクに対するセキュリティ対策

  5. 2018 07.19

    【セキュリティ】「SSO(シングルサインオン)」、「SAML」とは?

  6. 2020 11.29

    【SEO】SEOとURLの関係、サイトマップ、OGP

  • コメント ( 0 )
  • トラックバック ( 0 )
  1. この記事へのコメントはありません。

  1. この記事へのトラックバックはありません。

返信をキャンセルする。

【Ruby on Rails】マイグレーション、マイグ…

【Ruby on Rails】モデルの状態を自動制御す…

RETURN TOP

著者プロフィール

エンジニア歴10年で過去に業務系、Webデザイン、インフラ系なども経験あります。現在はWeb系でフロントエンド開発中心です。

詳細なプロフィールはこちら

スポンサーリンク

カテゴリー

  • Android
  • AngularJS
  • API
  • AWS
  • C++
  • CSS
  • cursor
  • C言語
  • DDD
  • DevOps
  • Django
  • Docker
  • Figma
  • Git
  • GitLab
  • GraphQL
  • gRPC
  • Hasura
  • Java
  • JavaScript
  • Kubernetes
  • Laravel
  • linux
  • MySQL
  • Next.js
  • nginx
  • Node.js
  • NoSQL
  • Nuxt.js
  • Oracle
  • PHP
  • Python
  • React
  • Redux
  • Rspec
  • Ruby
  • Ruby on Rails
  • Sass
  • Spring Framework
  • SQL
  • TypeScript
  • Unity
  • Vue.js
  • Webサービス開発
  • Webデザイン
  • Web技術
  • インフラ
  • オブジェクト指向
  • システム開発
  • セキュリティ
  • その他
  • データベース
  • デザインパターン
  • テスト
  • ネットワーク
  • プログラミング全般
  • マイクロサービス
  • マイクロソフト系技術
  • マルチメディア
  • リファクタリング
  • 副業
  • 未分類
  • 業務知識
  • 生成AI
  • 設計
  • 関数型言語
RETURN TOP

Copyright ©  プログラミングマガジン | プライバシーポリシー