Webセキュリティは『最低限の守りで大半を防ぐ』
Webアプリの脆弱性の多くは、定石を踏まえば大半を防げます。本記事では編集部の視点で、実装と運用の要点を OWASP Top 10 をベースに公開情報をもとに整理します。認証・認可実践 もご参考に。
OWASP Top 10 を理解する
(1) A01: アクセス制御の不備:認可ロジックの抜け。(2) A02: 暗号化の失敗:平文保存・弱い暗号。(3) A03: インジェクション:SQL/コマンド/LDAP 等。(4) A04: 安全でない設計:脅威モデリング不足。(5) A05: セキュリティ設定ミス:デフォルト設定の放置。残りは公式の最新版でご確認ください。
SQL インジェクション対策
(1) パラメータ化クエリ:プレースホルダ必須。(2) ORM 利用:標準ではSQLが安全。(3) 動的SQL の制限:必要なら入念に検証。(4) 権限最小化:DB ユーザーの権限を絞る。(5) 監査ログ:失敗クエリも記録。PostgreSQL 実践 も合わせて。
XSS と CSRF
(1) XSS 対策:HTMLエスケープを徹底。(2) Content Security Policy:スクリプト実行制限。(3) CSRF 対策:CSRFトークンまたは SameSite cookie。(4) HttpOnly / Secure flag:cookie 保護。(5) テンプレートエンジンのデフォルトエスケープを活用。
認証・認可の堅牢化
(1) パスワードハッシュ:argon2 / bcrypt / scrypt。(2) MFA:第二要素必須化。(3) セッション管理:適切な TTL とローテーション。(4) 権限チェック:エンドポイント・データレベル両方。(5) OAuth/OIDC:自前認証より外部委譲が安全な場合多い。
機密情報の取扱い
(1) 秘密鍵を Git に入れない:絶対NG。(2) Secrets Manager:AWS/Cloud KMS/Vault。(3) 暗号化通信:HTTPS 強制 + HSTS。(4) 個人情報の最小化:保存しない選択。(5) ログでの漏洩防止:マスキング機構。ログ管理実践 も合わせて。
運用面の対策
(1) 依存ライブラリの更新:Dependabot/Renovate。(2) 脆弱性スキャン:Snyk / Trivy。(3) WAF 導入:CloudFront/Cloudflare/WAF。(4) レート制限:API/フォームに必須。(5) 監査ログ + アラート:異常検知の自動化。APIレート制限実装 もご参考に。
失敗しがちなパターン
(1) セキュリティはあとで:手戻り大。(2) ライブラリ放置で既知脆弱性:CVE 周知後の侵害多発。(3) エラーメッセージで内部情報漏洩。(4) パスワードリセットが弱い。(5) セキュリティ専任不在:継続的改善が止まる。対策は、(1)初期から設計に組込み、(2)依存更新の自動化、(3)エラー出力の制御、(4)リセットフロー設計、(5)セキュリティ責任者の明示、です。