APIセキュリティチェックリスト(APIの設計, テスト, リリース時における、重要なセキュリティ対策チェックリスト)
API Security Checklist
GitHubのトレンドリポジトリを眺めていたらAPIセキュリティチェックリストというものがあった。
日本語訳も最近追加されたみたい。
API-Security-Checklist/README-jp.md at master · shieldfy/API-Security-Checklist · GitHub
内容は、
API Security Checklist
これはAPIの設計, テスト, リリース時における、重要なセキュリティ対策チェックリストです。
認証(Authentication)
Basic認証
を使用してはならない。標準的な認証を使う。(例 JWT, OAuth)認証
,トークン生成
,パスワードの保管
において車輪の再発明をしてはならない。最大ログイン試行回数
(Max Retry) と、jail featuresを使用する。- 全ての秘匿情報を暗号化する。
JWT (JSON Web Token)
- ブルートフォース攻撃を困難にするため、ランダムで複雑なキー (
JWT Secret
) を使用する。- ペイロードからアルゴリズムを抽出してはならない。必ずバックエンドで暗号化する。(
HS256
若しくはRS256
)- トークンの有効期限 (
TTL
,RTTL
) は、可能な限り短くする。- JWTのペイロードに秘匿情報を含めてはならない。それは簡単に復号化される。
OAuth
- サーバサイドで常に
redirect_uri
を検証し、ホワイトリストに含まれるURLのみを許可する。- tokenではなく、codeでのやり取りを心がける。(
response_type=token
を許可しない)- OAuthの認証プロセスでのCSRFを防ぐため、
state
パラメータはランダムなハッシュと合わせて使用する。- デフォルトのscopeを指定し、各アプリケーションでscopeパラメータを検証する。
…省略…
みたいなことが書いてあるので参考になるかも。