API-Security-Checklist - APIを設計、テスト、リリースする際の最も重要なセキュリティ対策のチェックリスト

(Checklist of the most important security countermeasures when designing, testing, and releasing your API)

Created at: 2017-07-09 04:01:38
Language: NULL
License: MIT

繁中版|简中版|ポルトガル語 (ブラジル)|フランセ|한국어|オランダ|インドネシア|ไทย|Русский|Українська|スペイン語|イタリア語|日本語|ドイツ語|テュルクチェ|ティエンベトナム|Монгол|हिंदी|العربية|ポルスキ|Македонски|ລາວ|Ελληνικά|فارسی|മലയാളം

API セキュリティ チェックリスト

API を設計、テスト、リリースする際の最も重要なセキュリティ対策のチェックリスト。


認証

  • []使用しないでください。代わりに標準認証 (JWT、OAuth など) を使用してください。
    Basic Auth
  • []車輪の再発明をしないでください,,.標準を使用します。
    Authentication
    token generation
    password storage
  • []ログインの刑務所機能を使用します。
    Max Retry
  • [ ] すべての機密データに暗号化を使用します。

JWT (JSON Web Token)

  • []ランダムで複雑なキー()を使用して、トークンをブルートフォースすることを非常に困難にします。
    JWT Secret
  • []ヘッダーからアルゴリズムを抽出しないでください。バックエンド (または) でアルゴリズムを強制します。
    HS256
    RS256
  • []トークンの有効期限(,)をできるだけ短くします。
    TTL
    RTTL
  • []機密データをJWTペイロードに保存しないでください。簡単にデコードできます
  • [ ] 大量のデータを保存しないようにします。JWTは通常ヘッダーで共有され、サイズ制限があります。

ティッカー

  • [ ] ホワイトリストに登録された URL のみを許可するように、常にサーバー側で検証します。
    redirect_uri
  • []トークンではなく、常にコードと交換するようにしてください(許可しないでください)。
    response_type=token
  • [] OAuth認証プロセスでCSRFを防ぐために、ランダムなハッシュを持つパラメータを使用します。
    state
  • [ ] 既定のスコープを定義し、各アプリケーションのスコープ パラメーターを検証します。

アクセス

  • [ ] DDoS/ブルートフォース攻撃を回避するために、要求(スロットリング)を制限します。
  • []TLS 1.2+と安全な暗号を備えたサーバー側でHTTPSを使用して、MITM(中間者攻撃)を回避します。
  • [ ] SSLストリップ攻撃を回避するには、SSLでヘッダーを使用します。
    HSTS
  • [ ] ディレクトリ一覧をオフにします。
  • [ ] プライベート API の場合は、ホワイトリストに登録された IP/ホストからのアクセスのみを許可します。

インプット

  • []操作に応じて適切なHTTPメソッドを使用します:,,,、要求されたメソッドが要求されたリソースに適切でない場合は応答します。
    GET (read)
    POST (create)
    PUT/PATCH (replace/update)
    DELETE (to delete a record)
    405 Method Not Allowed
  • []要求の検証ヘッダー(コンテンツネゴシエーション)を受け入れて、サポートされている形式(例,,,など)のみを許可し、一致しない場合は応答で応答します。
    content-type
    application/xml
    application/json
    406 Not Acceptable
  • []同意した投稿データの検証(例,,,,など)。
    content-type
    application/x-www-form-urlencoded
    multipart/form-data
    application/json
  • [ ] ユーザー入力を検証して、一般的な脆弱性(,,,,など)を回避します。
    XSS
    SQL-Injection
    Remote Code Execution
  • [] URL に機密データ (,,, または) を使用せず、標準の認証ヘッダーを使用します。
    credentials
    Passwords
    security tokens
    API keys
  • [ ] サーバー側の暗号化のみを使用します。
  • [ ] APIゲートウェイ・サービスを使用して、キャッシュ、レート制限ポリシー(,,,など)を有効にし、APIリソースを動的にデプロイします。
    Quota
    Spike Arrest
    Concurrent Rate Limit

加工

  • []認証プロセスの中断を避けるために、すべてのエンドポイントが認証の背後で保護されているかどうかを確認します。
  • [ ] ユーザー自身のリソース ID は避ける必要があります。使用する代わりに。
    /me/orders
    /user/654321/orders
  • [ ] ID を自動インクリメントしません。代わりに使用します。
    UUID
  • [] XMLデータを解析する場合は、(XML外部エンティティ攻撃)を回避するためにエンティティ解析が有効になっていないことを確認してください。
    XXE
  • []アンカーと参照を使用してXML、YAMLまたはその他の言語を解析する場合は、指数関数的なエンティティ展開攻撃を回避するために、エンティティ展開が有効になっていないことを確認してください。
    Billion Laughs/XML bomb
  • [ ] ファイルのアップロードにはCDNを使用します。
  • []大量のデータを処理する場合は、ワーカーとキューを使用してバックグラウンドで可能な限り処理し、HTTPブロッキングを回避するために応答を高速に返します。
  • []デバッグモードをオフにすることを忘れないでください。
  • [ ] 使用可能な場合は、実行不可能なスタックを使用します。

アウトプット

  • []ヘッダーを送信します。
    X-Content-Type-Options: nosniff
  • []ヘッダーを送信します。
    X-Frame-Options: deny
  • []ヘッダーを送信します。
    Content-Security-Policy: default-src 'none'
  • []フィンガープリントヘッダー-,,,などを削除します。
    X-Powered-By
    Server
    X-AspNet-Version
  • []あなたの応答のために強制します。あなたが戻った場合、あなたの応答はです。
    content-type
    application/json
    content-type
    application/json
  • [ ] 、などの機密データを返さないでください。
    credentials
    passwords
    security tokens
  • []完了した操作に応じて適切なステータスコードを返します。(例えば,,,,,など)。
    200 OK
    400 Bad Request
    401 Unauthorized
    405 Method Not Allowed

CI & CD

  • [ ] 単体/統合テストのカバレッジを使用して設計と実装を監査します。
  • []コードレビュープロセスを使用し、自己承認を無視します。
  • [ ] 本番環境にプッシュする前に、サービスのすべてのコンポーネント(ベンダー・ライブラリやその他の依存関係を含む)がAVソフトウェアによって静的にスキャンされていることを確認します。
  • []コードに対してセキュリティテスト(静的/動的分析)を継続的に実行します。
  • [ ] 依存関係 (ソフトウェアと OS の両方) で既知の脆弱性を確認します。
  • [ ] 展開用のロールバック・ソリューションを設計します。

関連項目:


寄付

このリポジトリをフォークし、いくつかの変更を加え、プルリクエストを送信することで、自由に貢献してください。ご不明な点がございましたら、メールでお問い合わせください。

team@shieldfy.io