私は、作業中の Web アプリケーションのどこでセキュリティを強化する必要があるかを把握するために、innerHTML を使っていくつかの実験を行ってきました。
var name = "<img src=x onerror=alert(1)>";
element.innerHTML = name; // Instantly runs code.
a.) innerHTML を使用する必要があるかどうか、b.) それが問題ではない場合、なぜ他のコード挿入方法、特に eval を避けてきたのか、疑問に思いました。
私はブラウザで JavaScript クライアント側を実行していて、簡単にアクセスできる関数で機密情報を公開しないように必要な予防措置を講じており、innerHTML がセキュリティではないと判断した任意に指定されたポイントに到達したとします。リスクがあり、コードを最適化して、パフォーマンスへの影響が非常に小さいことを必ずしも心配しないようにしました...
eval を使用すると、さらに問題が発生しますか? 純粋なコード インジェクション以外にセキュリティ上の懸念事項はありますか?
または、別の方法として、innerHTML は同じように注意する必要がありますか? 同じように危険ですか?