章: 第6章: パフォーマンスとインフラ
セキュリティ対策を「思いついたものから対処」していませんか?
場当たり的なセキュリティ対策では、重要な脅威を見落とすリスクがあります。OWASP Top 10はWebアプリの代表的な脆弱性をリスト化したもので、これを基準に設計段階からセキュリティを組み込めます。
OWASP Top 10を知らないと何が起きるか
SQLインジェクションを防いだのに、アクセス制御の不備で別のエンドポイントから全データが取得できてしまう——1つの対策だけでは不十分です。Top 10を網羅的に理解することで、見落としのない防御設計ができます。
OWASP Top 10(2021)と主なPHP対策
| 脆弱性 | 概要 | PHP/Laravel での主な対策 |
| A01: アクセス制御の不備 | 認可チェックの漏れ | ポリシー・ミドルウェアで認可を徹底 |
| A02: 暗号化の失敗 | 平文での機密情報保存・通信 | password_hash() / HTTPS強制 |
| A03: インジェクション | SQLi・XSSなど | プリペアドステートメント・エスケープ |
| A05: セキュリティ設定ミス | デフォルト設定のまま | APP_DEBUG=false / .env非公開 |
| A07: 認証の失敗 | 弱いパスワード・セッション固定 | セッション再生成・ログイン試行制限 |
| A09: ログ・監視の不備 | エラーに気づかない | Sentry / ログ収集・通知 |
チェックポイント: OWASP Top 10はリリース前のセキュリティレビューチェックリストとして活用しましょう。各項目に対して「このアプリでの対策は何か」を1行でまとめておくと、レビュー漏れを防げます。特にA01(アクセス制御)とA03(インジェクション)は実装ミスが多いため優先的に確認してください。
コードサンプル
# OWASP Top 10(2021)と主なPHP対策
# A01: アクセス制御の不備
# -> 認可ミドルウェアの徹底
# A02: 暗号化の失敗
# -> password_hash() / HTTPS強制
# A03: インジェクション(SQLi, XSS)
# -> プリペアドステートメント / htmlspecialchars
# A05: セキュリティの設定ミス
# -> .envの非公開 / APP_DEBUG=false
# A07: 認証の失敗
# -> セッション固定化対策 / ログイン試行制限
# A09: ログ・監視の不備
# -> エラーログの収集と通知
まとめ & 次のステップ
- OWASP Top 10を設計段階のチェックリストとして活用しましょう
- A01(アクセス制御)とA03(インジェクション)は特に優先度が高いです
- リリース前に各項目の対策状況を1行でまとめてレビューしましょう
- Laravelのビルトイン機能(CSRF保護・クエリビルダ)を積極的に使いましょう
- セキュリティは1度対策して終わりではなく、継続的なレビューが必要です
次回は エラー監視(Sentry入門) を学びます。本番のエラーをリアルタイムに検知する仕組みを整理しましょう。