Asp.Net Web API 2プロジェクトでは、すべてのhttp要求と応答をlog4Netで記録しています。
一部のコントローラには、「CreditCard、CVV、Month、Year」などの重要なパラメータがあります。このデータはデータベースに保存しないでください。
これらを確認する方法がわかりません。 RegExを使用する必要がありますか?または、保存してはいけない重要なパラメーターを含むコントローラーメソッドのログを非表示にする必要がありますか?
「すべてのHTTPリクエストとレスポンスをlog4Netで記録しています。」
これは開発者にとって非常に便利ですが、非常に悪い習慣であり、違法となる可能性があります。
あなたが指摘したように、あなたはおそらくクレジットカード情報を非PCI準拠の方法で保存しています。
また、所有者が許可していない方法で、名前や住所などの「個人情報」を処理している可能性があります。あなたの国のデータ保護法または同等法を破る。
ユーザーのユーザー名とパスワードをクリアテキストで保存することもできます
ソリューションは言うのは簡単ですが、実装するのは難しいです。すべてのリクエスト/レスポンスのロギングを停止し、ログに書き込まれる正確なメッセージの制御を開始する必要があります。
例えば。
の代わりに
Log.Write("Error processing request" + request.ToString());
あなたは正確なエラーをキャッチして書いています
...
DoStuff(publicA,secret1,secret2)
}
catch(Exception ex)
{
Log.Write("Error doing stuff with id : " + publicA);
}
PublicAはハッカーにとって意味のない内部のdb参照または識別子であり、セキュリティ監査人に証明できることがわかっている場合。
明確にするために:ログを非表示にしたり、パラメーターのブラックリストを作成したり、正規表現を使用して秘密データを見つけて削除したりすることは、本当に役に立ちます。あなたがすべての事件を捕まえたと確信することができないので。
@LarsViklundが回答をコメントに釘付けにしました。あなたが支払い処理業者でない限り、クレジットカード情報は決してサーバーに届かないはずです。
実際の問題を修正する必要があり、ロギングの実践に例外を設けてそれを隠そうとしないでください。
ビジネスリーダーに、ハッカーがクライアントのデータを取得することは決してありません。多くのプライバシー法および PCIコンプライアンス -に違反する可能性が非常に高いため、非常に大きな罰金が科される可能性があることを説明します。