2017-12-29 17 views
0

私はクラスからhtmlコンテンツを挿入しようとしますが、代わりにhtml要素の代わりに文字列が得られます。角2 htmlインジェクションはhtml要素の代わりに文字列を出力します

角度バージョン:角度-CLI:1.0.0-beta.20-4

HTMLコンテンツ:

<div [ngStyle]=getStyles()>{{getData()}}</div> 

のgetData()戻り値:

"<span style='color:#5999B6'>this.data</span>" 

this.data文字列です

+0

どのように役立つことを願っていますか?あなたは何を実際に返していますか? –

答えて

1

Angularでは、セキュリティ上の理由からテンプレートにHTMLを直接注入できません。あなたはあなたのhtmlを消毒する必要があります。あなたのHTMLをサニタイズするには、次のURLに従ってください。 https://netbasal.com/angular-2-security-the-domsanitizer-service-2202c83bd90

は、それはあなたの `のgetData()`関数がどのように見えるん

+0

実際には、私はそれを生産に使っています^^。問題は、テンプレートに文字列を挿入する前に、リンクしたトピックがサニタイズをバイパスするよう要求することです。この文字列がユーザー入力にリンクされている場合は、XSSの注入が確実に行われます。消毒剤はそれのためにここにいるはずです。 – Supamiu

0

innerHTML

を使用してhtmlをバインドします。
<div [ngStyle]="getStyles()" [innerHTML]="getData()"></div> 

しかし気をつけて、あなたはXSSの問題を回避するためにgetData()によって返されたHTMLを完全に制御を持っている必要があります。

関連する問題