English | 繁中版 | 简中版 | العربية | Azərbaycan | Български | বাংলা | Català | Čeština | Deutsch | Ελληνικά | Español | فارسی | Français | हिंदी | Indonesia | Italiano | 한국어 | ພາສາລາວ | Македонски | മലയാളം | Монгол | Nederlands | Polski | Português (Brasil) | Русский | ไทย | Türkçe | Українська | Tiếng Việt
APIを設計、テスト、リリースするときの最も重要なセキュリティ対策のチェックリスト
Basic認証を利用せず、標準的な認証を利用する。認証、トークンの生成、パスワードの保管において「車輪の再発明」をしないこと。すでに標準化されているものを利用する。最大リトライ回数(Max Retry)とjail機能を利用する。HSTSヘッダを設定する。redirect_uriを検証し、ホワイトリストに含まれるURLのみを許可する。response_type=tokenを許可しない)。stateパラメータをランダムなハッシュと共に利用し、OAuth認証プロセスでのCSRFを防ぐ。GET(読み込み), POST(作成), PUT/PATCH(置き換え/更新), DELETE(単一レコードの削除)。リクエストメソッドがリソースに対して適切ではない場合、405 Method Not Allowedを返す。content-typeを検証する。サポートしているフォーマット(例: application/xml, application/json等)は許可し、そうでない場合は406 Not Acceptableを返す。content-typeが受け入れ可能(例: application/x-www-form-urlencoded, multipart/form-data, 等)かどうかを検証する。/user/654321/ordersの代わりに/me/ordersを利用する。UUIDを利用する。XXE(XML external entity attack)を回避するため、entity parsingが有効でないことを確認する。Billion Laughs/XML bomb攻撃を回避するためentity expansion が有効でないことを確認する。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にする。このリポジトリをforkして、変更し、プルリクエストを送信し、自由にコントリビューションしてください。何か質問があれば [email protected] まで電子メールを送ってください。
application/jsonXSS, SQLインジェクション, リモートコード実行等)。認証情報, パスワード, セキュリティトークン)を利用せず、標準的な認証ヘッダを使用する。Quota, Spike Arrest, Concurrent Rate Limit)を有効化し、APIリソースのデプロイを動的に行うため、APIゲートウェイサービスを利用する。認証情報, パスワード, セキュリティトークンといった機密情報を返さない。200 OK, 400 Bad Request, 401 Unauthorized, 405 Method Not Allowed等)。