ここでの考え方を理解し、この問題に対する正しい、受け入れられたアプローチに到達したい。コンテキストの場合、これはWeb環境にあり、データベースへの入力を逃れることについて話しています。データベースに悪意のあるコードを格納する - エスケープ時の出力は常に正しい方法ですか?
私は、ユーザー入力を受け取り、データベースに格納するときに入力をエスケープしない理由の多くを理解しています。その入力をさまざまな方法(JSONなど、SMSなど)で使用し、その入力を元の形式でユーザーに表示したい場合もあります。
データベースに何かを入れる前に、データベースを保護するSQLインジェクション攻撃がないことを確認します。
しかし、following the principals set out hereとhereは、ユーザー入力をそのまま保存する方法を示しています。このユーザー入力はSQLインジェクション攻撃ではない可能性がありますが、他の悪質なコードである可能性があります。このような場合、JavascriptベースのXSS攻撃をデータベースに保存することはできますか?
私の前提が正しいかどうかだけを知りたいのですが、その悪質なコードがデータベースに直接影響しない限り、悪意のあるコードをデータベースに格納しても問題ありませんか?データベースの問題ではないのですか?悪質なコードの落とし穴を避けるために、この悪質なコードとその出力デバイスを保持することができますか?
また、これらのプリンシパルよりも多くのエスケープを行う必要がありますか?出力上のエスケープの前にセキュリティ上の懸念がありますか?データベースに悪意のあるコードが入らないようにする必要がありますか?とにかく悪意のあるコードを保存したいのはなぜですか?
ウェブクライアント/サーバー環境のコンテキストで悪質なコードをデータベースに保存する正しい方法は何ですか?
[Iは、特にコードはそれらに共有することを可能にする任意のサイトを無視しています。この目的のため、私は、そのような名前、コメントや説明フィールドとして「通常」の入力を考えています。]