- 設計
セキュリティ設計チェックリスト|設計段階の確認項目一覧
セキュリティ設計チェックリストとは、設計レビューの場で「何を・どの設計書の章で・いつまでに決めるか」を1行ずつ確かめるための確認表です。 脆弱性の名前を並べた表ではなく、「決めたか/どこに書いたか」を答えられる問いの形にしておくと、レビューでそのまま使えます。
この記事では、Webアプリ向けの60項目を10分類で示し、各項目に「決める工程(要件・設計・実装)」「書く場所」「OWASP Top 10:2025 のカテゴリ」「OWASP ASVS 5.0 の節番号」を付けました。表計算ソフトに貼れるCSVと、架空の備品予約システムでの記入例も載せています。
確認環境:Python 3.11.15(チェックリストの表とCSVの生成、件数の集計)。OWASP Top 10:2025 の公式ページと、OWASP ASVS 5.0.0 の公式CSVを 2026-10-05 に開いて、カテゴリ名と章・節の名前を確かめました。
この記事の結論
- 確認項目は 10分類×6項目=60項目。内訳は、要件定義で決めるもの16、設計で決めるもの35、実装で確かめるもの9です。
- 「誰と合意が必要か」で工程を振り分けます。 利用者や発注側と合意が要るものは要件、開発チームが方式を選ぶものは設計、コードやテストでしか確かめられないものは実装です。
- チェックリストは「判定・決めた内容・根拠」の3列を足して記入すると、設計レビューの記録としてそのまま残せます。
- Top 10:2025 は「何が起きやすいか」の10分類、ASVS 5.0 は「何を満たせばよいか」の要件集です。レビューの確認表には ASVS の節番号を付けておくと、詳しい要件をすぐ引けます。
セキュリティ設計チェックリストの早見表
| 分類 | 主に決めること | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 の章 |
|---|---|---|---|---|
| 認証 | 認証方式、パスワードの決まり、ログイン制限、再設定手順 | セキュリティ要件、認証設計 | A07 | V6 |
| 認可 | ロールと操作の対応、データの範囲、判定する層 | 権限一覧、権限設計 | A01 | V8 |
| セッション | タイムアウト、ID の作り直し、Cookie の属性、無効化 | セッション設計 | A07、A02 | V7、V3 |
| 入力 | 型・桁・範囲、サーバー側検証、業務上の上限、回数制限 | 入力チェック仕様、API設計 | A05、A06 | V2、V1、V4 |
| 出力 | エスケープ方針、応答ヘッダー、エラー応答の内容 | 共通処理、基盤設計、メッセージ設計 | A05、A02、A10、A01、A08 | V1、V3、V13 |
| 暗号 | データの分類、アルゴリズム一覧、鍵の保管、通信の暗号化 | 暗号設計、基盤設計 | A04、A02 | V11、V12、V13、V14 |
| ログ | 記録するイベント、項目、書かない情報、保存期間、通知 | ログ設計、監視設計 | A09 | V16 |
| ファイル | 種類と大きさ、保存先、ダウンロード時の判定 | ファイル設計 | A06、A01、A10 | V5 |
| 外部連携 | 連携先一覧、認証情報の保管、接続先の許可リスト、ライブラリ | 外部インターフェース設計、構成管理 | A02、A01、A03、A07、A08 | V13、V1、V15、V10、V9 |
| 運用 | 環境ごとの設定、管理者アカウント、修正の期限、バックアップ | 環境設計、運用設計 | A02、A01、A03、A04、A06、A10 | V13、V8、V15、V14 |
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「セキュリティ設計チェックリスト|設計段階の確認項目一覧」
要件定義・設計・実装のどこで決めるか
同じ「セキュリティの確認項目」でも、決める工程が違います。工程を取り違えると、設計レビューで「それは発注側に聞かないと決まらない」と止まったり、要件定義の場で実装の細部を議論して時間が足りなくなったりします。項目ごとに工程を先に決めておくことが、チェックリストを使いやすくする一番の工夫です。
3つの工程の違い
| 工程 | 決める内容 | 合意する相手 | 書く文書 | 例 |
|---|---|---|---|---|
| 要件定義 | 「何を守るか」「どこまで求めるか」。費用・使い勝手・運用体制に影響する決めごと | 利用部門、発注側、運用担当 | 要件定義書(セキュリティ要件、運用要件) | 多要素認証を求める対象、無操作タイムアウトの時間、ログの保存期間 |
| 設計 | 「どうやって満たすか」。方式・設定値・判定する場所の選択 | 開発チーム、基盤担当 | 基本設計書・詳細設計書の各章 | Cookie の属性、権限を判定する層、エスケープ方針、鍵の保管場所 |
| 実装 | 「決めたとおりに作られているか」。コードとテストで確かめること | 開発者、レビュー担当、テスト担当 | コーディング規約、テスト仕様書、レビュー記録 | SQL がプレースホルダで書かれているか、ID を書き換えて他人のデータに届かないか |
振り分けの判断基準
迷ったときは、上から順に当てはめます。
| 順 | 問い | 当てはまるとき |
|---|---|---|
| 1 | 決めた結果で、利用者の操作・費用・運用の人手が変わるか | 要件(利用部門・発注側と合意する) |
| 2 | 法令・契約・社内規程で値が指定されているか | 要件(根拠の文書名と条番号を控える) |
| 3 | 複数の方式から選ぶ話で、選んだ結果が複数の機能に共通して効くか | 設計(共通処理・基盤設計に書く) |
| 4 | 画面・API・テーブルの個別の定義に書ける内容か | 設計(該当する設計書の章に書く) |
| 5 | 文書を読んでも確かめられず、コードか動作を見る必要があるか | 実装(規約・レビュー観点・テストケースにする) |
たとえば「無操作タイムアウトは何分か」は、短くすると利用者の入力し直しが増えるので順1に当たり、要件です。「タイムアウトをサーバー側のどこで判定するか」は順3で設計、「タイムアウト後に戻るボタンで前の画面が表示されないか」は順5で実装になります。1つの話題が3つの工程に分かれるので、チェックリストでは行を分けておきます。
セキュリティ設計チェックリスト60項目
「決める工程」は上の基準で振り分けたものです。Top 10:2025 と ASVS 5.0 の列は、各項目に最も近いカテゴリと節をこの記事で対応づけたもので、ASVS の節番号は「V6.2」のように章と節までを示しています(個々の要件番号は公式の文書で引いてください)。
認証の確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| A-01 | 認証 | 認証方式(パスワード・多要素・外部の認証基盤)と対象の利用者を決めたか | 要件 | セキュリティ要件/認証 | A07 | V6.1 |
| A-02 | 認証 | パスワードの最小長・最大長・使える文字、漏えい済みパスワードとの照合を決めたか | 設計 | 認証設計 | A07 | V6.2 |
| A-03 | 認証 | 続けてログインできなかったときの制限(回数・待ち時間・解除方法)を決めたか | 設計 | 認証設計 | A07 | V6.1, V6.3 |
| A-04 | 認証 | 多要素認証を求める利用者と操作を決めたか | 要件 | セキュリティ要件/認証 | A07 | V6.3, V6.5 |
| A-05 | 認証 | パスワード再設定と認証要素の再発行の手順(本人確認・有効期限)を決めたか | 設計 | 認証設計 | A07 | V6.4 |
| A-06 | 認証 | 認証エラーの文言が、IDの有無を推測できない共通の文言になっているか | 実装 | メッセージ一覧/テスト仕様 | A07 | V6.3 |
認可の確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| Z-01 | 認可 | ロールと操作の対応表(誰が何をできるか)を作ったか | 要件 | 権限一覧 | A01 | V8.1 |
| Z-02 | 認可 | データの範囲(自分・自部署・全体)をロールごとに決めたか | 設計 | 権限設計 | A01 | V8.1, V8.2 |
| Z-03 | 認可 | 権限の判定をサーバー側のどの層で毎回行うかを決めたか | 設計 | アーキテクチャ/共通処理 | A01 | V8.3 |
| Z-04 | 認可 | URLやIDを書き換えても他人のデータに届かないことを確かめたか | 実装 | テスト仕様 | A01 | V8.2 |
| Z-05 | 認可 | 管理機能の入口を分け、追加の確認(再認証・接続元の制限)を決めたか | 設計 | 権限設計/画面設計 | A01 | V8.4 |
| Z-06 | 認可 | ロール変更・退職時に権限がいつ反映されるかを決めたか | 設計 | 権限設計 | A01 | V8.3 |
セッションの確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| S-01 | セッション | 無操作タイムアウトと最長の有効時間を決めたか | 要件 | セキュリティ要件/セッション | A07 | V7.1, V7.3 |
| S-02 | セッション | セッションIDの生成方法と、ログイン時に作り直すことを決めたか | 設計 | セッション設計 | A07 | V7.2 |
| S-03 | セッション | Cookieの属性(Secure・HttpOnly・SameSite・名前の接頭辞)を決めたか | 設計 | セッション設計 | A02 | V3.3 |
| S-04 | セッション | ログアウト・パスワード変更・権限変更でセッションを無効にするか決めたか | 設計 | セッション設計 | A07 | V7.4 |
| S-05 | セッション | 同じ利用者の同時ログインを許すか、上限をいくつにするか決めたか | 要件 | セキュリティ要件/セッション | A07 | V7.1 |
| S-06 | セッション | 重要な操作(メールアドレス変更・削除など)の前に再認証を求めるか決めたか | 設計 | 画面設計/セッション設計 | A07 | V7.5 |
入力の確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| I-01 | 入力 | 項目ごとの型・桁数・範囲・許可する文字を入力チェック仕様に書いたか | 設計 | 入力チェック仕様 | A05 | V2.1, V2.2 |
| I-02 | 入力 | 画面側のチェックとは別に、サーバー側で必ず検証する方針にしたか | 設計 | アーキテクチャ/共通処理 | A05 | V2.2 |
| I-03 | 入力 | SQLはプレースホルダで組み立て、文字列連結をしていないか | 実装 | コーディング規約/コードレビュー | A05 | V1.2 |
| I-04 | 入力 | 業務上の上限(1回の件数・数量・1日の回数)を決めたか | 要件 | 業務要件/機能要件 | A06 | V2.1, V2.3 |
| I-05 | 入力 | 自動操作による大量アクセスへの制限(回数制限など)を決めたか | 設計 | 共通処理/基盤設計 | A06 | V2.4 |
| I-06 | 入力 | リクエストの大きさ・JSONの構造・想定外の項目の扱いを決めたか | 設計 | API設計 | A05 | V4.2 |
出力の確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| O-01 | 出力 | 出力先(HTML本文・属性・JavaScript・URL)ごとのエスケープ方針を決めたか | 設計 | アーキテクチャ/共通処理 | A05 | V1.1, V1.2 |
| O-02 | 出力 | 応答のContent-Typeと文字コードを明示しているか | 実装 | コードレビュー/テスト仕様 | A02 | V3.2, V4.1 |
| O-03 | 出力 | 応答ヘッダー(CSP・HSTS・X-Content-Type-Options など)の一覧を決めたか | 設計 | 基盤設計 | A02 | V3.4 |
| O-04 | 出力 | エラー画面とAPIのエラー応答に内部情報(スタックトレース・SQL)を出さないと決めたか | 設計 | メッセージ設計/API設計 | A10 | V13.4 |
| O-05 | 出力 | 更新系リクエストに、他サイトからの送信を防ぐ仕組み(トークン・SameSite)を決めたか | 設計 | 共通処理 | A01 | V3.5 |
| O-06 | 出力 | 外部から読み込むスクリプトに完全性の確認(SRI)を付けているか | 実装 | コードレビュー | A08 | V3.6 |
暗号の確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| C-01 | 暗号 | 守るデータを分類し、保存時に暗号化する対象を決めたか | 要件 | セキュリティ要件/データ保護 | A04 | V14.1 |
| C-02 | 暗号 | 使う暗号アルゴリズム・鍵の長さ・用途の一覧を作ったか | 設計 | 暗号設計 | A04 | V11.1, V11.3 |
| C-03 | 暗号 | パスワードの保存方式(パスワード用のハッシュ関数と設定値)を決めたか | 設計 | 暗号設計/認証設計 | A04 | V11.4 |
| C-04 | 暗号 | 鍵・APIキー・DBパスワードの保管場所と交換手順を決めたか | 設計 | 基盤設計/運用設計 | A02 | V13.3 |
| C-05 | 暗号 | 通信の暗号化(TLSの版と適用する区間)を決めたか | 設計 | 基盤設計 | A04 | V12.1, V12.2 |
| C-06 | 暗号 | トークンや再設定URLに暗号用の乱数生成を使っているか | 実装 | コーディング規約/コードレビュー | A04 | V11.5 |
ログの確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| L-01 | ログ | 記録するイベントの一覧(ログイン・権限エラー・設定変更など)を決めたか | 要件 | セキュリティ要件/ログ | A09 | V16.1, V16.3 |
| L-02 | ログ | ログの項目(いつ・誰が・どこから・何を・結果)を決めたか | 設計 | ログ設計 | A09 | V16.2 |
| L-03 | ログ | ログに書かない情報(パスワード・トークン・個人情報)を決めたか | 設計 | ログ設計 | A09 | V16.2 |
| L-04 | ログ | ログの保存期間・保管場所・閲覧できる人を決めたか | 要件 | セキュリティ要件/ログ | A09 | V16.1 |
| L-05 | ログ | 通知する条件(しきい値)と連絡先を決めたか | 設計 | 監視設計 | A09 | V16.3 |
| L-06 | ログ | 時刻をUTCなど1つの基準にそろえて記録しているか | 実装 | コードレビュー/テスト仕様 | A09 | V16.2 |
ファイルの確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| F-01 | ファイル | 受け付けるファイルの種類・拡張子・大きさの上限を決めたか | 要件 | 機能要件/ファイル | A06 | V5.1, V5.2 |
| F-02 | ファイル | 拡張子と中身が合っているかを検査しているか | 実装 | テスト仕様 | A06 | V5.2 |
| F-03 | ファイル | 保存先(公開領域の外)と保存名の付け方を決めたか | 設計 | ファイル設計 | A01 | V5.3 |
| F-04 | ファイル | ダウンロード時の権限判定とファイル名の扱いを決めたか | 設計 | ファイル設計 | A01 | V5.4 |
| F-05 | ファイル | 受け取ったファイルの検査(ウイルス検査など)の要否を決めたか | 要件 | セキュリティ要件/ファイル | A06 | V5.4 |
| F-06 | ファイル | 圧縮ファイルの展開後の大きさとファイル数の上限を決めたか | 設計 | ファイル設計 | A10 | V5.2 |
外部連携の確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| E-01 | 外部連携 | 連携先の一覧(通信の向き・認証方式・扱うデータ)を作ったか | 要件 | 外部インターフェース一覧 | A02 | V13.1, V13.2 |
| E-02 | 外部連携 | 連携用の認証情報の保管場所・権限の範囲・交換周期を決めたか | 設計 | 外部インターフェース設計 | A02 | V13.3 |
| E-03 | 外部連携 | 利用者が指定したURLへサーバーから接続する機能の、接続先の許可リストを決めたか | 設計 | 外部インターフェース設計 | A01 | V1.3 |
| E-04 | 外部連携 | 外部ライブラリの一覧と、更新・点検の方針を決めたか | 要件 | 開発方針/構成管理 | A03 | V15.1, V15.2 |
| E-05 | 外部連携 | OAuth/OpenID Connectを使う場合の方式と設定値を決めたか | 設計 | 認証設計 | A07 | V10.1, V10.2 |
| E-06 | 外部連携 | 外部から受け取る通知やトークンの署名を検証しているか | 実装 | コードレビュー/テスト仕様 | A08 | V9.1 |
運用の確認項目
| No | 分類 | 確認項目 | 決める工程 | 書く場所(設計書の章) | Top 10:2025 | ASVS 5.0 |
|---|---|---|---|---|---|---|
| U-01 | 運用 | 環境ごとの設定の違い(デバッグ表示オフ・初期アカウント削除)を一覧にしたか | 設計 | 環境設計 | A02 | V13.1, V13.4 |
| U-02 | 運用 | 管理者アカウントの発行・定期的な見直し・削除の手順を決めたか | 要件 | 運用要件 | A01 | V8.4 |
| U-03 | 運用 | 脆弱性情報の確認方法と、修正を当てるまでの期限を決めたか | 要件 | 運用要件 | A03 | V15.1 |
| U-04 | 運用 | バックアップの暗号化と、取り出せる人を決めたか | 設計 | 運用設計 | A04 | V14.2 |
| U-05 | 運用 | 個人情報の保存期間と削除方法を決めたか | 要件 | セキュリティ要件/データ保護 | A06 | V14.1, V14.2 |
| U-06 | 運用 | 想定外のエラーが起きたときに、処理を通さず安全側で止める方針にしたか | 設計 | エラー処理方針 | A10 | V15.3 |
分類と工程ごとの件数
上の60項目を Python で集計した結果です。設計で決める項目が半分以上を占めるので、設計レビューの時間配分は設計の35項目を中心に組むと進めやすくなります。
| 分類 | 要件 | 設計 | 実装 |
|---|---|---|---|
| 認証 | 2 | 3 | 1 |
| 認可 | 1 | 4 | 1 |
| セッション | 2 | 4 | 0 |
| 入力 | 1 | 4 | 1 |
| 出力 | 0 | 4 | 2 |
| 暗号 | 1 | 4 | 1 |
| ログ | 2 | 3 | 1 |
| ファイル | 2 | 3 | 1 |
| 外部連携 | 2 | 3 | 1 |
| 運用 | 3 | 3 | 0 |
| 合計 | 16 | 35 | 9 |
Top 10:2025 のカテゴリ別では、A01 が11、A02 が7、A03 が2、A04 が6、A05 が5、A06 が6、A07 が12、A08 が2、A09 が6、A10 が3で、10カテゴリすべてに1つ以上の項目が対応しています。
表計算ソフトに貼れるCSV
そのまま保存して表計算ソフトで開けます。右側の「判定」「決めた内容」「根拠・参照先」の3列が記入欄です。
No,分類,確認項目,決める工程,書く場所(設計書の章),Top 10:2025,ASVS 5.0,判定,決めた内容,根拠・参照先
A-01,認証,認証方式(パスワード・多要素・外部の認証基盤)と対象の利用者を決めたか,要件,セキュリティ要件/認証,A07,V6.1,,,
A-02,認証,パスワードの最小長・最大長・使える文字、漏えい済みパスワードとの照合を決めたか,設計,認証設計,A07,V6.2,,,
A-03,認証,続けてログインできなかったときの制限(回数・待ち時間・解除方法)を決めたか,設計,認証設計,A07,"V6.1, V6.3",,,
A-04,認証,多要素認証を求める利用者と操作を決めたか,要件,セキュリティ要件/認証,A07,"V6.3, V6.5",,,
A-05,認証,パスワード再設定と認証要素の再発行の手順(本人確認・有効期限)を決めたか,設計,認証設計,A07,V6.4,,,
A-06,認証,認証エラーの文言が、IDの有無を推測できない共通の文言になっているか,実装,メッセージ一覧/テスト仕様,A07,V6.3,,,
Z-01,認可,ロールと操作の対応表(誰が何をできるか)を作ったか,要件,権限一覧,A01,V8.1,,,
Z-02,認可,データの範囲(自分・自部署・全体)をロールごとに決めたか,設計,権限設計,A01,"V8.1, V8.2",,,
Z-03,認可,権限の判定をサーバー側のどの層で毎回行うかを決めたか,設計,アーキテクチャ/共通処理,A01,V8.3,,,
Z-04,認可,URLやIDを書き換えても他人のデータに届かないことを確かめたか,実装,テスト仕様,A01,V8.2,,,
Z-05,認可,管理機能の入口を分け、追加の確認(再認証・接続元の制限)を決めたか,設計,権限設計/画面設計,A01,V8.4,,,
Z-06,認可,ロール変更・退職時に権限がいつ反映されるかを決めたか,設計,権限設計,A01,V8.3,,,
S-01,セッション,無操作タイムアウトと最長の有効時間を決めたか,要件,セキュリティ要件/セッション,A07,"V7.1, V7.3",,,
S-02,セッション,セッションIDの生成方法と、ログイン時に作り直すことを決めたか,設計,セッション設計,A07,V7.2,,,
S-03,セッション,Cookieの属性(Secure・HttpOnly・SameSite・名前の接頭辞)を決めたか,設計,セッション設計,A02,V3.3,,,
S-04,セッション,ログアウト・パスワード変更・権限変更でセッションを無効にするか決めたか,設計,セッション設計,A07,V7.4,,,
S-05,セッション,同じ利用者の同時ログインを許すか、上限をいくつにするか決めたか,要件,セキュリティ要件/セッション,A07,V7.1,,,
S-06,セッション,重要な操作(メールアドレス変更・削除など)の前に再認証を求めるか決めたか,設計,画面設計/セッション設計,A07,V7.5,,,
I-01,入力,項目ごとの型・桁数・範囲・許可する文字を入力チェック仕様に書いたか,設計,入力チェック仕様,A05,"V2.1, V2.2",,,
I-02,入力,画面側のチェックとは別に、サーバー側で必ず検証する方針にしたか,設計,アーキテクチャ/共通処理,A05,V2.2,,,
I-03,入力,SQLはプレースホルダで組み立て、文字列連結をしていないか,実装,コーディング規約/コードレビュー,A05,V1.2,,,
I-04,入力,業務上の上限(1回の件数・数量・1日の回数)を決めたか,要件,業務要件/機能要件,A06,"V2.1, V2.3",,,
I-05,入力,自動操作による大量アクセスへの制限(回数制限など)を決めたか,設計,共通処理/基盤設計,A06,V2.4,,,
I-06,入力,リクエストの大きさ・JSONの構造・想定外の項目の扱いを決めたか,設計,API設計,A05,V4.2,,,
O-01,出力,出力先(HTML本文・属性・JavaScript・URL)ごとのエスケープ方針を決めたか,設計,アーキテクチャ/共通処理,A05,"V1.1, V1.2",,,
O-02,出力,応答のContent-Typeと文字コードを明示しているか,実装,コードレビュー/テスト仕様,A02,"V3.2, V4.1",,,
O-03,出力,応答ヘッダー(CSP・HSTS・X-Content-Type-Options など)の一覧を決めたか,設計,基盤設計,A02,V3.4,,,
O-04,出力,エラー画面とAPIのエラー応答に内部情報(スタックトレース・SQL)を出さないと決めたか,設計,メッセージ設計/API設計,A10,V13.4,,,
O-05,出力,更新系リクエストに、他サイトからの送信を防ぐ仕組み(トークン・SameSite)を決めたか,設計,共通処理,A01,V3.5,,,
O-06,出力,外部から読み込むスクリプトに完全性の確認(SRI)を付けているか,実装,コードレビュー,A08,V3.6,,,
C-01,暗号,守るデータを分類し、保存時に暗号化する対象を決めたか,要件,セキュリティ要件/データ保護,A04,V14.1,,,
C-02,暗号,使う暗号アルゴリズム・鍵の長さ・用途の一覧を作ったか,設計,暗号設計,A04,"V11.1, V11.3",,,
C-03,暗号,パスワードの保存方式(パスワード用のハッシュ関数と設定値)を決めたか,設計,暗号設計/認証設計,A04,V11.4,,,
C-04,暗号,鍵・APIキー・DBパスワードの保管場所と交換手順を決めたか,設計,基盤設計/運用設計,A02,V13.3,,,
C-05,暗号,通信の暗号化(TLSの版と適用する区間)を決めたか,設計,基盤設計,A04,"V12.1, V12.2",,,
C-06,暗号,トークンや再設定URLに暗号用の乱数生成を使っているか,実装,コーディング規約/コードレビュー,A04,V11.5,,,
L-01,ログ,記録するイベントの一覧(ログイン・権限エラー・設定変更など)を決めたか,要件,セキュリティ要件/ログ,A09,"V16.1, V16.3",,,
L-02,ログ,ログの項目(いつ・誰が・どこから・何を・結果)を決めたか,設計,ログ設計,A09,V16.2,,,
L-03,ログ,ログに書かない情報(パスワード・トークン・個人情報)を決めたか,設計,ログ設計,A09,V16.2,,,
L-04,ログ,ログの保存期間・保管場所・閲覧できる人を決めたか,要件,セキュリティ要件/ログ,A09,V16.1,,,
L-05,ログ,通知する条件(しきい値)と連絡先を決めたか,設計,監視設計,A09,V16.3,,,
L-06,ログ,時刻をUTCなど1つの基準にそろえて記録しているか,実装,コードレビュー/テスト仕様,A09,V16.2,,,
F-01,ファイル,受け付けるファイルの種類・拡張子・大きさの上限を決めたか,要件,機能要件/ファイル,A06,"V5.1, V5.2",,,
F-02,ファイル,拡張子と中身が合っているかを検査しているか,実装,テスト仕様,A06,V5.2,,,
F-03,ファイル,保存先(公開領域の外)と保存名の付け方を決めたか,設計,ファイル設計,A01,V5.3,,,
F-04,ファイル,ダウンロード時の権限判定とファイル名の扱いを決めたか,設計,ファイル設計,A01,V5.4,,,
F-05,ファイル,受け取ったファイルの検査(ウイルス検査など)の要否を決めたか,要件,セキュリティ要件/ファイル,A06,V5.4,,,
F-06,ファイル,圧縮ファイルの展開後の大きさとファイル数の上限を決めたか,設計,ファイル設計,A10,V5.2,,,
E-01,外部連携,連携先の一覧(通信の向き・認証方式・扱うデータ)を作ったか,要件,外部インターフェース一覧,A02,"V13.1, V13.2",,,
E-02,外部連携,連携用の認証情報の保管場所・権限の範囲・交換周期を決めたか,設計,外部インターフェース設計,A02,V13.3,,,
E-03,外部連携,利用者が指定したURLへサーバーから接続する機能の、接続先の許可リストを決めたか,設計,外部インターフェース設計,A01,V1.3,,,
E-04,外部連携,外部ライブラリの一覧と、更新・点検の方針を決めたか,要件,開発方針/構成管理,A03,"V15.1, V15.2",,,
E-05,外部連携,OAuth/OpenID Connectを使う場合の方式と設定値を決めたか,設計,認証設計,A07,"V10.1, V10.2",,,
E-06,外部連携,外部から受け取る通知やトークンの署名を検証しているか,実装,コードレビュー/テスト仕様,A08,V9.1,,,
U-01,運用,環境ごとの設定の違い(デバッグ表示オフ・初期アカウント削除)を一覧にしたか,設計,環境設計,A02,"V13.1, V13.4",,,
U-02,運用,管理者アカウントの発行・定期的な見直し・削除の手順を決めたか,要件,運用要件,A01,V8.4,,,
U-03,運用,脆弱性情報の確認方法と、修正を当てるまでの期限を決めたか,要件,運用要件,A03,V15.1,,,
U-04,運用,バックアップの暗号化と、取り出せる人を決めたか,設計,運用設計,A04,V14.2,,,
U-05,運用,個人情報の保存期間と削除方法を決めたか,要件,セキュリティ要件/データ保護,A06,"V14.1, V14.2",,,
U-06,運用,想定外のエラーが起きたときに、処理を通さず安全側で止める方針にしたか,設計,エラー処理方針,A10,V15.3,,,
記入のしかたと記入例
記入欄の決まり
| 列 | 書くこと | 書き方の決まり |
|---|---|---|
| 判定 | 済/未/対象外 のいずれか | 「対象外」は理由を「決めた内容」に必ず書く。空欄は「未」と同じ扱いにする |
| 決めた内容 | 決めた値や方式を1〜2文で | 「適切に設定する」のような書き方を避け、値(15分、12文字以上 など)で書く |
| 根拠・参照先 | 設計書の章番号、要件ID、規程の名前 | 文書名+章番号で書き、口頭の合意は議事録の日付を添える |
「対象外」を選べるようにしておくことが大切です。ファイルを扱わないシステムでファイルの6項目を「未」のまま残すと、どこまで確認が済んだのか読み取れなくなります。
記入例:備品予約システム
社内の備品(会議用機材など)を予約する架空のシステムを題材にした記入例です。社員は社内の認証基盤でログインし、総務担当だけが備品の登録と予約の取り消しを行う想定です。
| No | 確認項目(要約) | 工程 | 判定 | 決めた内容 | 根拠・参照先 |
|---|---|---|---|---|---|
| A-01 | 認証方式と対象の利用者 | 要件 | 済 | 社内の認証基盤による OpenID Connect。対象は全社員。システム独自のパスワードは持たない | 要件定義書 5.1 |
| A-02 | パスワードの決まり | 設計 | 対象外 | 独自のパスワードを持たないため。認証基盤側の決まりに従う | 要件定義書 5.1 |
| Z-01 | ロールと操作の対応表 | 要件 | 済 | ロールは「社員」「総務担当」「システム管理者」の3つ。操作12個との対応表を作成 | 権限一覧 2章 |
| Z-02 | データの範囲 | 設計 | 済 | 社員は自分の予約だけ変更できる。総務担当は全予約を変更できる。閲覧は全員が全予約を見られる | 基本設計書 4.2 |
| S-01 | タイムアウト | 要件 | 済 | 無操作60分、最長10時間(1日の勤務時間に収まる長さ) | 要件定義書 5.3、打ち合わせ記録 9/18 |
| S-03 | Cookie の属性 | 設計 | 済 | Secure、HttpOnly、SameSite=Lax を付ける。名前は __Host- で始める |
基本設計書 6.1 |
| I-04 | 業務上の上限 | 要件 | 済 | 1人が同時に持てる予約は10件、1回の予約は最長5日 | 要件定義書 3.4 |
| O-04 | エラー応答の内容 | 設計 | 済 | 画面には問い合わせ用の番号だけを表示し、詳細はサーバーのログに記録する | 基本設計書 7.2 |
| L-01 | 記録するイベント | 要件 | 済 | ログイン、権限エラー、予約の取り消し、備品マスタの変更、ロールの変更 | 要件定義書 5.6 |
| F-01 | ファイルの種類と大きさ | 要件 | 済 | 備品の写真のみ。PNG と JPEG、1ファイル 5MB まで | 要件定義書 3.7 |
| E-03 | 接続先の許可リスト | 設計 | 対象外 | 利用者が指定したURLへサーバーから接続する機能が無いため | 機能一覧 |
| U-02 | 管理者アカウントの見直し | 要件 | 未 | 見直しの周期を運用担当と調整中(次回レビューまでに決める) | 課題一覧 No.14 |
「未」の行には、誰と何を調整中で、いつまでに決めるかを書いておくと、次のレビューで続きから始められます。
OWASP Top 10:2025 と ASVS 5.0 の違いと使い分け
チェックリストの右2列に出てくる2つの文書は、役割が違います。
| 比べる点 | OWASP Top 10:2025 | OWASP ASVS 5.0 |
|---|---|---|
| 性質 | Webアプリで起きやすいリスクを10カテゴリにまとめた文書 | アプリが満たすべきセキュリティ要件を章・節・要件番号で並べた標準 |
| 粒度 | カテゴリ(A01〜A10) | 章(V1〜)→ 節(V6.2 など)→ 個々の要件 |
| 向いている使い方 | 全体像の共有、教育、抜けている分野が無いかの確認 | 設計レビューやテストの確認項目、要件の引用元 |
| チェックリストでの役割 | 分類に偏りが無いかを見る目印 | 各項目の詳しい要件を引く索引 |
どちらを使うかの判断基準
| 状況 | 使うもの |
|---|---|
| チームや利用部門に、どんなリスクがあるかを短時間で伝えたい | Top 10:2025 |
| 設計レビューで、決めるべき内容を具体的に確かめたい | ASVS 5.0 の該当する節 |
| 要件定義書に、セキュリティ要件の引用元を書きたい | ASVS 5.0(版と要件番号を添える) |
| 自作のチェックリストに抜けが無いかを見直したい | Top 10:2025 の10カテゴリと突き合わせる |
| テスト仕様書の観点を作りたい | ASVS 5.0 の個々の要件 |
OWASP Top 10:2025 の10カテゴリ
公式ページに掲載されているカテゴリ名です。
| ID | カテゴリ名 | このチェックリストで対応する主な分類 |
|---|---|---|
| A01:2025 | Broken Access Control | 認可、ファイル、出力 |
| A02:2025 | Security Misconfiguration | セッション、出力、暗号、外部連携、運用 |
| A03:2025 | Software Supply Chain Failures | 外部連携、運用 |
| A04:2025 | Cryptographic Failures | 暗号、運用 |
| A05:2025 | Injection | 入力、出力 |
| A06:2025 | Insecure Design | 入力、ファイル、運用 |
| A07:2025 | Authentication Failures | 認証、セッション、外部連携 |
| A08:2025 | Software or Data Integrity Failures | 出力、外部連携 |
| A09:2025 | Security Logging and Alerting Failures | ログ |
| A10:2025 | Mishandling of Exceptional Conditions | 出力、ファイル、運用 |
ASVS 5.0 の章と、このチェックリストの分類
ASVS 5.0.0 の公式CSVで確かめた V1〜V16 の章の名前です。
| 章 | 章の名前 | 対応する分類 |
|---|---|---|
| V1 | Encoding and Sanitization | 入力、出力、外部連携 |
| V2 | Validation and Business Logic | 入力 |
| V3 | Web Frontend Security | セッション、出力 |
| V4 | API and Web Service | 入力、出力 |
| V5 | File Handling | ファイル |
| V6 | Authentication | 認証 |
| V7 | Session Management | セッション |
| V8 | Authorization | 認可、運用 |
| V9 | Self-contained Tokens | 外部連携 |
| V10 | OAuth and OIDC | 外部連携 |
| V11 | Cryptography | 暗号 |
| V12 | Secure Communication | 暗号 |
| V13 | Configuration | 出力、暗号、外部連携、運用 |
| V14 | Data Protection | 暗号、運用 |
| V15 | Secure Coding and Architecture | 外部連携、運用 |
| V16 | Security Logging and Error Handling | ログ |
設計レビューでの使い方
進め方
| 手順 | すること | 目安 |
|---|---|---|
| 1 | 要件定義の終わりに、工程が「要件」の16項目を記入する | 利用部門・運用担当と一緒に確認する |
| 2 | 対象外にする分類を先に決め、理由を書く | ファイル、外部連携は対象外になりやすい |
| 3 | 基本設計のレビューで、工程が「設計」の35項目を記入する | 1分類あたり10分程度、合計2時間を2回に分ける |
| 4 | 「実装」の9項目を、コーディング規約とテスト仕様書の観点に写す | 設計レビューでは「どこに写したか」だけを確かめる |
| 5 | 「未」の行を課題一覧に登録し、期限と担当を決める | 次のレビューの最初に「未」だけを見直す |
自分たちのシステムに合わせて直すとき
60項目は出発点です。次の基準で足し引きします。
| 状況 | 直し方 |
|---|---|
| 分類まるごと該当しない(例:ファイルを扱わない) | 行を消さずに「対象外」と理由を書く。あとから機能が増えたときに見直せる |
| 社内規程やお客様の基準に項目がある | 行を足し、根拠の列に規程の名前を書く。番号は「X-01」のように別の接頭辞にする |
| 同じ指摘がレビューで繰り返し出る | その指摘を問いの形にして行を足す |
| 1つの項目に「済」と「未」が混ざる | 項目が大きいので、決める内容ごとに行を分ける |
確かめて分かったこと
- ASVS 5.0 には「Documentation」という節が多くの章の先頭にあります。 公式CSVで確かめた V1〜V16 のうち、V2.1、V3.1、V5.1、V6.1、V7.1、V8.1、V11.1、V13.1、V14.1、V15.1、V16.1 の11節が、名前に Documentation を含んでいました。「実装の前に文書で決めておくこと」をまとめた節なので、設計段階のチェックリストはこの節から拾うと作りやすくなります。
- ASVS の「最新の安定版」は、開くページによって表示が違いました。 2026-10-05 の時点で、GitHub の公式リポジトリの README は 5.0.0(2025年5月)を最新の安定版と案内していましたが、owasp.org のプロジェクトページには 4.0.3 を最新の安定版とする記載が残っていました。要件定義書に引用するときは、版番号を必ず添えると読み手が迷いません。
- Top 10:2025 には、設計や運用で決める話が多く含まれています。 A03(Software Supply Chain Failures)と A10(Mishandling of Exceptional Conditions)は、コードの書き方だけでなく、ライブラリの管理方針やエラー時の方針を決めておく話です。今回の60項目では、この2つに対応する5項目すべてが要件か設計の工程になりました。
- 60項目を工程で分けると、実装で確かめる項目は9つでした。 残りの51項目は文書で決める内容です。設計レビューで時間をかけるべきなのは「コードの検査」より「決めごとの抜け」だと、件数からも分かります。
- セッションと運用の分類には、実装の工程の項目がありませんでした。 この2分類は、決めた設定値がそのまま動作になる内容が中心です。そのぶん、設定値を値で書いておくこと(「60分」「SameSite=Lax」など)が大切になります。
よくある質問
Q. セキュリティ設計チェックリストとは何ですか? A. 設計レビューで、セキュリティに関する決めごとが抜けていないかを1行ずつ確かめる表です。項目を「〜を決めたか」という問いの形にし、判定・決めた内容・根拠を記入して使います。
Q. セキュリティ要件とセキュリティ設計の違いは何ですか? A. 要件は「何を・どこまで守るか」、設計は「どうやって満たすか」です。利用者の操作・費用・運用に影響する決めごとは要件として利用部門と合意し、方式や設定値の選択は設計として開発チームが決めます。
Q. OWASP Top 10 と ASVS の違いは何ですか? A. Top 10 は起きやすいリスクの10分類、ASVS は満たすべき要件を章・節・番号で並べた標準です。全体像の共有には Top 10、確認項目や要件の引用元には ASVS が向いています。
Q. チェックリストの項目が多くてレビューが終わらないときは? A. 工程で分けて、回を分けるのが近道です。要件の16項目は要件定義の終わりに、設計の35項目は基本設計のレビューで、実装の9項目は規約とテスト観点に写す、と3つに分けると1回あたりの量が収まります。
Q. 小さなシステムでも60項目すべてを確認する必要がありますか? A. すべての行に判定を付けることをおすすめします。該当しない分類は「対象外」と理由を書けば数分で済み、「確認したうえで対象外にした」という記録が残ります。
まとめ
- セキュリティ設計チェックリストは、「〜を決めたか」という問いの形にすると設計レビューでそのまま使えます。
- 確認項目は認証・認可・セッション・入力・出力・暗号・ログ・ファイル・外部連携・運用の10分類×6項目=60項目です。
- 工程は「誰と合意が必要か」で振り分けます。今回の内訳は要件16、設計35、実装9でした。
- 記入欄は判定(済/未/対象外)・決めた内容・根拠の3列。値で書き、対象外には理由を書きます。
- Top 10:2025 は偏りの確認に、ASVS 5.0 は詳しい要件の索引に使い分けます。引用するときは版番号を添えます。
- ASVS 5.0 の Documentation の節は、設計段階で決める内容の手がかりになります。
参考・出典
- OWASP Top 10:2025(https://top10.owasp.org/2025/ )
- OWASP Application Security Verification Standard 5.0.0(https://github.com/OWASP/ASVS )
- OWASP ASVS プロジェクトページ(https://owasp.org/www-project-application-security-verification-standard/ )
本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。
(記載例)出典:株式会社RJC「セキュリティ設計チェックリスト|設計段階の確認項目一覧」
株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。
WE ARE HIRING
RJCで一緒に開発しながら、
成長を楽しみませんか?
RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!
- 127日年間休日
- 12時間平均残業時間
- 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!
ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。