この文書は2016年以降更新されていません
OWASP トップ 10 チートシート
はじめに
これは、2013 年版の OWASP トップ 10 プロジェクトに対する開発者向け対策チートシートです。リスクの特定方法を調べられるように、OWASP テストプロジェクトに基づくクイックリファレンスも掲載しています。
OWASP トップ 10 チートシート
プレゼンテーション | コントローラー | モデル | テスト (OWASP テストガイド V4) | |
A1 インジェクション |
レンダー:
On Submit:
|
適切な文字セットを使用して正規化する
適切な文字セットを使用してポジティブ入力値検証を行う (NR) ネガティブ入力値検証。 (LR) 入力をサニタイズする。 ヒント: ネガティブリスト (たとえば、"script"、"sCrIpT"、"ßCrîpt" などを検索) の更新は、コストの高い常時展開が必要であり、"有害な" 文字列のリストが攻撃者に見破られるため、必ず失敗します。ポジティブ検証は、より簡単で、より速く、一般により安全であるほか、他のどの入力メカニズムよりも更新がはるかに少なくてすみます。 |
*パラメーター化されたクエリ
ヒント: すべての SQL インジェクションは、動的 SQL クエリに原因があります。組織内での動的 SQL クエリの禁止を真剣に検討してください。 |
SQL Injection (OTG-INPVAL-005) LDAP Injection (OTG-INPVAL-006) ORM Injection (OTG-INPVAL-007) XML Injection (OTG-INPVAL-008) SSI Injection (OTG-INPVAL-009) XPath Injection (OTG-INPVAL-010) IMAP/SMTP Injection (OTG-INPVAL-011) Code Injection (OTG-INPVAL-012) Command Injection (OTG-INPVAL-013) Buffer Overflow (OTG-INPVAL-014) |
A2 認証とセッション管理の不備 | レンダー:
|
設計:
|
ロールがデータの作成、読み取り、書き込み、更新、または削除に十分であることを確認する。
ヒント: ユーザーが 1 秒、1 分、または 1 時間あたりに実行できる最大リクエスト数を規制する "governor" の使用を検討してください。たとえば、一般的なバンキングユーザーが 1 分間に 10 件を超える取引を実行するはずはありません。1 秒間に 100 件は危険であり、禁止する必要があります。 |
Test Role Definitions (OTG-IDENT-001) Test User Registration Process (OTG-IDENT-002) Test Account Provisioning Process (OTG-IDENT-003) Testing for Account Enumeration and Guessable User Account (OTG-IDENT-004) Testing for Weak or unenforced username policy (OTG-IDENT-005) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001) Testing for default credentials (OTG-AUTHN-002) Testing for Weak lock out mechanism (OTG-AUTHN-003) Testing for bypassing authentication schema (OTG-AUTHN-004) Test remember password functionality (OTG-AUTHN-005) Testing for Browser cache weakness (OTG-AUTHN-006) Testing for Weak password policy (OTG-AUTHN-007) Testing for Weak security question/answer (OTG-AUTHN-008) Testing for weak password change or reset functionalities (OTG-AUTHN-009) Testing for Weaker authentication in alternative channel (OTG-AUTHN-010) Testing for bypassing authorization schema (OTG-AUTHZ-002) Testing for Privilege Escalation (OTG-AUTHZ-003) Testing for Bypassing Session Management Schema (OTG-SESS-001) Testing for Cookies attributes (OTG-SESS-002) Testing for Session Fixation (OTG-SESS-003) Testing for Exposed Session Variables (OTG-SESS-004) Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005) Testing for logout functionality (OTG-SESS-006) Test Session Timeout (OTG-SESS-007) Testing for Session puzzling (OTG-SESS-008) |
A3 クロスサイトスクリプティング (XSS) |
レンダー:
On Submit:
|
適切な文字セットを使用して正規化する
適切な文字セットを使用してポジティブ入力値検証を行う (NR) ネガティブ入力値検証 (LR) 入力をサニタイズする ヒント: 100% 信用できるデータだけを処理します。それ以外はすべて悪意のあるデータとして拒否してください。 |
ヒント: HTML エンコードされたデータをデータベースに格納しないでください。これにより、データが別の用途 (Web サービス、RSS フィード、FTP バッチ、データウェアハウス、クラウドコンピューティングなど) に使用されるのを防止できます。
ヒント: OWASP Scrubbr を使用すると、汚染されたデータや敵意のあるデータをレガシデータから消去できます。 |
Testing for Reflected Cross Site Scripting (OTG-INPVAL-001) Testing for Stored Cross Site Scripting (OTG-INPVAL-002) Testing for DOM based Cross Site Scripting (OTG-CLIENT-001) Testing for JavaScript Execution (OTG-CLIENT-002) Testing for HTML Injection (OTG-CLIENT-003) Testing for Cross Site Flashing (OTG-CLIENT-008) |
A4 安全でない直接オブジェクト参照 | データが内部の信頼できるソースのものである場合は、データを送信しない。
または レンダー:
|
内部の信頼できるソースからデータを取得する。
または ランダムアクセス参照アクセスマップから直接値を取得する。 |
ロールがデータの作成、読み取り、書き込み、更新、または削除に十分であることを確認する。 |
Testing Directory traversal/file include (OTG-AUTHZ-001) Testing for Insecure Direct Object References (OTG-AUTHZ-004) Testing for Local File Inclusion Testing for Remote File Inclusion |
A5 セキュリティ設定のミス | Web サーバーとアプリケーションサーバーが強固であることを確認する。
PHP: php.ini で allow_url_fopen と allow_url_include が両方とも無効になっていることを確認する。Suhosin エクステンションの使用を検討する。 |
Web サーバーとアプリケーションサーバーが強固であることを確認する。
XML: XML スタックによって一般的な Web 攻撃 (リモート XSLT 変換、悪意のある XPath クエリ、再帰的 DTD など) が防止されていることを確認する。XML ドキュメントやクエリを手作業で作成しない。XML レイヤーを使用する。 |
データベースサーバーが強固であることを確認する。 |
Fingerprint Web Server (OTG-INFO-002) Fingerprint Web Application Framework (OTG-INFO-008) Fingerprint Web Application (OTG-INFO-009) Test Network/Infrastructure Configuration (OTG-CONFIG-001) Test Application Platform Configuration (OTG-CONFIG-002) Test File Extensions Handling for Sensitive Information (OTG-CONFIG-003) Review Old, Backup and Unreferenced Files for Sensitive Information (OTG-CONFIG-004) Enumerate Infrastructure and Application Admin Interfaces (OTG-CONFIG-005) Test HTTP Methods (OTG-CONFIG-006) Test RIA cross domain policy (OTG-CONFIG-008) Analysis of Error Codes (OTG-ERR-001) Analysis of Stack Traces (OTG-ERR-002) |
A6 機密データの露出 | 設計:
ヒント: 内部でも必ず TLS 1.2 を使用してください。ほとんどのスヌーピングは社内ネットワークの内側で行われます。これは、ダイナマイト漁と同じくらい簡単で反倫理的です。 レンダー:
|
設計:
ヒント: 特定の個人情報と機密データだけを必ず暗号化します。漏えいしたり盗まれたりしたら困るか損害が大きいデータを暗号化します。 ヒント: データベースサーバーではなくアプリケーションサーバーでデータを暗号化するのが最善です。 |
設計:
ヒント: RDBMS データベースの row レベルまたはテーブルレベルの暗号化は使用しないでください。サーバーへの直接アクセスや、アプリケーションの資格情報を使用したネットワーク経由で、何者かにデータがクリアテキストで取得されるおそれがあります。ディスク上では "暗号化" されているにもかかわらず、データがネットワーク上をクリアテキストで流れる可能性さえあります。 |
Testing for Weak SSL/TLS Ciphers, Insufficient Transport Layer Protection (OTG-CRYPST-001) Testing for Padding Oracle (OTG-CRYPST-002) Testing for Sensitive information sent via unencrypted channels (OTG-CRYPST-003) Test HTTP Strict Transport Security (OTG-CONFIG-007) Testing for Credentials Transported over an Encrypted Channel (OTG-AUTHN-001) |
A7 機能レベルのアクセス制御の欠落 | 設計:
レンダー前:
レンダー:
|
ヒント: セキュリティで保護されたリソースでも、その Web アプリケーションサーバーが直接提供しないリソースについては、アクセスを制御できません。このため、バイナリオクテットストリーミングを使用して Web アプリケーションサーバーから PDF レポートなどを提供することをお勧めします。 ヒント: "隠し" ディレクトリや "ランダムな" ファイル名がある場所を攻撃者が必ず突きとめると想定して、これらのファイルを、直接リンクされていなくても Web ルート内に保存しないでください。 |
ロールがデータの作成、読み取り、書き込み、更新、または削除に十分であることを確認する。 |
Testing Directory traversal/file include (OTG-AUTHZ-001) Testing for bypassing authorization schema (OTG-AUTHZ-002) Testing for bypassing authentication schema (OTG-AUTHN-004) |
A8 クロスサイトリクエストフォージェリ (CSRF) | レンダー前:
レンダー:
|
ヒント: XSS がある限り、CSRF は常に可能です。必ずアプリケーションから XSS を排除してください。 |
ロールがデータの作成、読み取り、書き込み、更新、または削除に十分であることを確認する。 |
Testing for Cross Site Request Forgery (CSRF) (OTG-SESS-005) |
A9 既知の脆弱性を持つコンポーネントの使用 |
|
|
|
|
A10 未検証のリダイレクトとフォワード |
または レンダー:
|
または
|
|
Authors and Primary Editors
Andrew van der Stock vanderaj[at]owasp.org
Ismael Rocha Gonçalves ismaelrg[at]gmail.com
Jorge Correa jacorream@gmail.com
Other Cheatsheets
Developer Cheat Sheets (Builder)
- Authentication Cheat Sheet (Spanish)
- Choosing and Using Security Questions Cheat Sheet
- Clickjacking Defense Cheat Sheet
- C-Based Toolchain Hardening Cheat Sheet
- Cross-Site Request Forgery (CSRF) Prevention Cheat Sheet
- Cryptographic Storage Cheat Sheet
- DOM based XSS Prevention Cheat Sheet
- Forgot Password Cheat Sheet
- HTML5 Security Cheat Sheet
- Input Validation Cheat Sheet
- JAAS Cheat Sheet
- Logging Cheat Sheet
- .NET Security Cheat Sheet
- OWASP Top Ten Cheat Sheet
- Password Storage Cheat Sheet
- Pinning Cheat Sheet
- Query Parameterization Cheat Sheet
- Ruby on Rails Cheatsheet
- REST Security Cheat Sheet
- Session Management Cheat Sheet
- SAML Security Cheat Sheet
- SQL Injection Prevention Cheat Sheet
- Transaction Authorization Cheat Sheet
- Transport Layer Protection Cheat Sheet
- Unvalidated Redirects and Forwards Cheat Sheet
- User Privacy Protection Cheat Sheet
- Web Service Security Cheat Sheet
- XSS (Cross Site Scripting) Prevention Cheat Sheet
Assessment Cheat Sheets (Breaker)
- Attack Surface Analysis Cheat Sheet
- XSS Filter Evasion Cheat Sheet
- REST Assessment Cheat Sheet
- Web Application Security Testing Cheat Sheet
Mobile Cheat Sheets
OpSec Cheat Sheets (Defender)
Draft Cheat Sheets
- Access Control Cheat Sheet
- Application Security Architecture Cheat Sheet
- Business Logic Security Cheat Sheet
- PHP Security Cheat Sheet
- Secure Coding Cheat Sheet
- Secure SDLC Cheat Sheet
- Threat Modeling Cheat Sheet
- Grails Secure Code Review Cheat Sheet
- IOS Application Security Testing Cheat Sheet
- Key Management Cheat Sheet
- Insecure Direct Object Reference Prevention Cheat Sheet
- Content Security Policy Cheat Sheet