説明
本番コードに debugger 文やリクエストデータを出力する一時的なログが残ると、内部状態、個人情報、認証の流れが露出するおそれがあります。debugger 文は、デバッガーが接続されて有効な場合に、実行を停止させる可能性があります。
想定される影響
- 機密性の高いリクエストデータが、ログやコンソールに出力されるおそれがあります。
- デバッガーのブレークポイントで、本番の処理が予期せず停止する可能性があります。
対処方法
- 本番コードから
debugger文と一時的なデバッグログを削除してください。 - 必要な診断ログには、構造化ログと機密情報のマスキング方針を適用してください。
例
変更前
javascript
app.get("/profile", (req, res) => {
console.log("profile request", req.body);
res.end();
});
変更後
javascript
app.get("/profile", (req, res) => {
auditLogger.info({ userId: req.session.user.id }, "profile viewed");
res.end();
});
解説:
- 変更前: デバッグログから、リクエスト本文や内部の機密情報が漏れる可能性があります。残された
debugger文も、デバッガーが有効な場合は実行を停止させるおそれがあります。 - 変更後: 本文全体の代わりに、必要なイベントとユーザー識別子だけを記録します。認証済みのセッションと
auditLoggerが用意されている前提です。ユーザー識別子も個人情報となる場合があるため、ログのアクセスと保管期間を制限してください。