---
paths:
  - "**/*.php"
  - "**/composer.lock"
  - "**/composer.json"
---
# PHP セキュリティ

> このファイルは [common/security.md](../common/security.md) を PHP 固有のコンテンツで拡張します。

## 入力と出力

- フレームワーク境界でリクエスト入力を検証する（`FormRequest`、Symfony Validator、または明示的な DTO バリデーション）。
- テンプレートではデフォルトで出力をエスケープする; 生の HTML レンダリングは正当化が必要な例外として扱う。
- バリデーションなしにクエリパラメータ、Cookie、ヘッダー、アップロードされたファイルのメタデータを信頼しない。

## データベースの安全性

- すべての動的クエリにプリペアドステートメント（`PDO`、Doctrine、Eloquent クエリビルダ）を使用する。
- コントローラ/ビューでの文字列構築 SQL を避ける。
- ORM のマスアサインメントを慎重にスコープし、書き込み可能なフィールドをホワイトリストにする。

## シークレットと依存関係

- 環境変数またはシークレットマネージャからシークレットをロードする、コミットされた設定ファイルからは読み込まない。
- CI で `composer audit` を実行し、依存関係追加前に新しいパッケージメンテナーの信頼性を確認する。
- メジャーバージョンは意図的に固定し、放棄されたパッケージは速やかに削除する。

## 認証とセッションの安全性

- パスワード保存には `password_hash()` / `password_verify()` を使用する。
- 認証と権限変更後にセッション識別子を再生成する。
- 状態変更を伴う Web リクエストに CSRF 保護を強制する。

## リファレンス

スキル: `laravel-security` で Laravel 固有のセキュリティガイダンスを参照してください。
