説明
暗号鍵をソースコードの定数や文字列引数に保存すると、鍵のローテーションや秘密情報の管理が難しくなります。コードが漏えいすれば、その鍵による暗号の保護も失われます。
想定される影響
鍵の用途によっては、保存データの復号、トークンの偽造、メッセージの改ざんにつながるおそれがあります。
対処方法
KMSやシークレットマネージャーから鍵を取得し、環境ごとに分離して定期的に更新します。
例
変更前
php
<?php
// クラス内のメンバーの例
private const ENCRYPTION_KEY = "Paintbrush";
変更後
php
<?php
$key = getenv('ENCRYPTION_KEY');
解説:
- 変更前: 暗号鍵をソースコードに直接保存しています。
- 変更後: この例では、配備環境が供給した鍵を環境変数から読み込みます。鍵がない場合や形式が不正な場合は処理を中止し、環境変数と供給経路へのアクセスも制限してください。