Webアプリ開発者のためのセキュリティ入門:OWASP Top 10 2025:Authentication Failures(認証の失敗)

Laravel

OWASP Top 10 を通じて、Webアプリケーションのセキュリティを学んでいきましょう。

OWASPとOWASP Top10についてはこちら。

https://biz.addisteria.com/what_is_owasp_top10/

今回は最新のOWASP TOP10 2025*で7位の座のAuthentication Failures(認証の失敗)について解説します。

こちら、前回の2021年版でも同じく7位でした(名称は変わっています)。

※2025年版は現在 Release Candidate(候補版)として公開されており、正式版では内容が調整される可能性があります。

Laravelアプリケーション開発時の対策や、バイブコーディング(生成AIコーディング)でも役立つ対策も考えていきますね。

Authentication Failures(認証の失敗)

Authentication Failures(認証の失敗)について、公式説明ページはこちら:

これは、認証機能が弱すぎることによる脆弱性リスクです。

便利なフレームワークを使うと、安全な認証機能はあらかじめ実装されています。それにもかかわらず、この認証の失敗リスクは以前として存在しています。

例えば、下記のような状況が該当します。

  • 分かりやすすぎるパスワードを使用する(Password1とかadminのような)
  • ユーザーに漏洩した認証情報でアカウントを作ることを許す
  • アカウント復旧やパスワード再設定が簡単にできてしまう
  • 暗号化なし、平文のまま、あるいは弱いハッシュ化でパスワードを保存する
  • 二段階認証がない
  • セッション管理が不適切(ログアウト後もセッションが残ったままなど)

また、既知のユーザー名とパスワードの組み合わせによる一斉攻撃は、現在非常に一般的な攻撃です。たとえば、Winter2025Winter2026 といった感じで、パスワードの一部を変えて認証を試みていくものです。

もはやパスワードだけで大事なデータを守れる時代は、終わりつつありますね。

CWE(共通脆弱性タイプ)

このカテゴリーに含まれる主なCWE(脆弱性分類)は次のとおりです。

  • CWE-259:ハードコードされたパスワードの使用

  • CWE-297:ホストの不一致を伴う証明書の不適切な検証

  • CWE-287:不適切な認証

  • CWE-384:セッション固定

  • CWE-798:ハードコードされた認証情報の使用

対策

このリスクに対して、下記のような対策が挙げられます。

  • 二段階(二要素)認証機能を実装する

  • パスワードマネージャーにパスワードを作らせる

  • デフォルトの認証情報をそのままにしてデプロイしない
     特に管理者ユーザーの場合は要注意

  • パスワードの強さをチェックする機能を実装する

  • アカウント作成時とパスワード変更時に、既知の漏洩認証情報リストと照合

  • パスワードの長さ、複雑性、繰り返し使用しているかをチェック

  • パスワードの定期変更を強制しない
  • アカウント列挙攻撃への対策
    登録、認証情報復旧、APIのパスウェイをアカウント列挙攻撃から保護
  •  ログイン試行の制限
  • 安全なセッション管理
  • 信頼できる既製のシステムを使用

Laravelでの対策

Laravelは、スターターキットを使用してプロジェクトを作成すれば、デフォルトで使いやすく安全な認証機能が実装されています。

セッションについても適切に管理されており、デフォルトでは120分間(2時間)の非アクティブ時間でセッションが期限切れになります。

また最近の変更により、デフォルトで二段階(二要素)認証機能もつきました。この点について解説しますね。

二段階(二要素)認証機能がデフォルトで利用可能に

Laravelでは現在、スターターキットを使用してプロジェクトを作ると、Fortifyが使われます。Fortifyは、ログイン・登録・パスワードリセット・メール認証・2段階認証(2FA)などを提供する認証バックエンドです。

ただ、すべてのユーザーに対し二段階認証を義務付けるのは現実的ではない可能性もあります。

Webアプリによりますが、秘匿性の高いデータを扱っているのでなければ、通常ユーザーは二段階認証までは付けなくても良いでしょう。

一方、他のユーザーの管理を行う管理者ユーザーについては、二段階認証機能をつけておくと安心です。

また、すべてのユーザーに対して、メール認証機能の搭載はあったほうが良いかと思います。メール認証の搭載方法は、運営中の学習サイトの上級編などでもご紹介しています。ご興味あれば見てみてください。

基礎編は無料です。

Laravelの教科書について詳しく知る

古いプロジェクトの場合

古いプロジェクトの場合でも、ライブラリを使用して二段階機能を実装することは可能です。

機密データを扱うユーザーや、管理者などには付けておいた方が良いでしょう。

バイブコーディング(生成AIコーディング)での注意点

バイブコーディング(生成AIコーディング)ツールを使用して認証機能を搭載する場合は、バックエンドにSupabaseなどが使われたりします。

ツールによってはコードを全く意識せずに開発を進められますが、個人的には、認証機能まで実装する場合には、ある程度仕組みを知っておいた方がよいと思います。

特に重要な個人情報を収集するようなツールを作る場合には、何かあった時に、大きな問題に発展しかねません。

さいごに

認証は超基本ポイントですよね。

いちから実装するより、既存の安心できるライブラリを使うほうが安全だと思います。また、ユーザーの役割に応じた認証機能を実装しておくとよいでしょう。

OWASP Top10で学ぶセキュリティ、次の項目はこちら。

Laravel Laravelセキュリティ owasp セキュリティ

生成AIを使ったコーディングに興味がある あなたへ

バイブコーディングセミナープレゼント

バイブコーディングセミナーの一部を無料でプレゼント!

プレゼント詳細を見てみる

【Laravelの教科書・プレゼント】

Junko
Laravelの使い方を覚えたい!と思ったら、ぜひ、役立ててほしいです。 基礎編は無料でプレゼント中です♪
ひつじプログラマ
会員制サイトをいちから作っていくよ。ボタンをクリックして詳細を見てね。
Laravelの教科書の詳細を見る

最新版テキストに加え、Laravel8版~Laravel11版もご用意しています♪

【無料プレゼント】

「LaravelでWebアプリをいちから作れるようになりたい!」

そんなLaravel初心者のあなたへ【Laravelの教科書】基礎編プレゼント中! 会員制フォーラムサイトを学習しながら作れます。

詳細はこちらをクリック

最新版テキストに加え、Laravel8版からLaravel11版もご用意しています♪

Laravelの本を書きました。


ひつじが目印♪

Laravelの使い方を分かりやすく解説した書籍を出版しました。 ご好評につき、最新版に対応した改訂版を2025年7月に発売
書店やAmazon等のオンラインショップにて販売中です。 詳しくは下記ボタンをクリック

書籍の詳細を見てみる

Laravelの本書きました。


ひつじが目印♪
クリックするとamazonページへ。

Laravelの使い方を分かりやすく解説した書籍を出版しました。ご好評につき最新版対応の改訂版発売。書店やAmazon等のオンラインショップにて販売中です。

書籍の詳細を見てみる
Twitter始めました。
40代からプログラミング!
タイトルとURLをコピーしました