ハードコーディングされた暗号鍵

ハードコーディングされた暗号鍵

説明

暗号鍵をソースコードの定数や文字列引数に保存すると、鍵のローテーションや秘密情報の管理が難しくなります。コードが漏えいすれば、その鍵による暗号の保護も失われます。

想定される影響

鍵の用途によっては、保存データの復号、トークンの偽造、メッセージの改ざんにつながるおそれがあります。

対処方法

KMSやシークレットマネージャーから鍵を取得し、環境ごとに分離して定期的に更新します。

例

変更前

php
<?php
// クラス内のメンバーの例
private const ENCRYPTION_KEY = "Paintbrush";

変更後

php
<?php
$key = getenv('ENCRYPTION_KEY');

解説:

  • 変更前: 暗号鍵をソースコードに直接保存しています。
  • 変更後: この例では、配備環境が供給した鍵を環境変数から読み込みます。鍵がない場合や形式が不正な場合は処理を中止し、環境変数と供給経路へのアクセスも制限してください。

参考資料