私のプロジェクトでは、私は 'エスケープ'をサニタイズ値戦略として使用しています。そして私はある場所で翻訳ディレクティブ(属性)を使用しています。私が翻訳フィルタを使用しているいくつかの他の場所。ディレクティブで角翻訳命令のXSS
:
<span translate="{{vm.text}}"><span>
これはXSSにvulnarableです。 vm.text
の値が<script>alert()</script>
の場合、スクリプトが実行され、ポップアップが表示されます。フィルターと
:
<span>{{vm.text | translate}}<span>
vm.text
の値はエスケープされたHTMLは、彼らがサニタイズ値として「エスケープ」を使用することをお勧めします角度翻訳ドキュメント(https://angular-translate.github.io/docs/#/guide/19_security)で<script>alert()</script>
として示されていますstrategy said '現在、サニタイズモードに問題があり、UTF-8文字や特殊文字を2倍にエンコードします。推奨:これが解決されるまで 'エスケープ'戦略を使用してください '。
htmlを実行しないで<script>alert()</script>
と表示する適切な方法はありますか?フィルタ(パイプ)で
フィルタを使用すると正しくエスケープされますが、この種の攻撃はエスケープしません:#/ {{{} "))); alert(1)//";}}このディレクティブを使用すると、この種の攻撃ですが、あなたが説明するスクリプト攻撃では失敗します。だから私にとってこれは翻訳ライブラリの大きな穴です。 – Gurnard