web-dev-qa-db-ja.com

[= innerHTML]をAngular 5で使用しても安全ですか?

Angular2 +で[innerHTML]タグを使用するのは危険であるという矛盾する報告を見てきました。それはまだ事実ですか?それは修正されていますか?

たとえば、このコードは危険です:

<div [innerHTML]="post.body"></div>
8
ahat91

here (angularサイト自体)で述べたように、アンギュラーは安全でない値を自動的に認識してサニタイズするため、心配はないようです。

そこに書かれたものは次のとおりです。

補間されたコンテンツは常にエスケープされます。HTMLは解釈されず、ブラウザの要素のテキストコンテンツに山括弧が表示されます。

HTMLを解釈するには、innerHTMLなどのHTMLプロパティにバインドします。ただし、攻撃者が制御する可能性のある値をinnerHTMLにバインドすると、通常XSSの脆弱性が発生します。たとえば、_<script>_タグに含まれるコードが実行されます。

export class InnerHtmlBindingComponent { // For example, a user/attacker-controlled value from a URL. htmlSnippet = 'Template <script>alert("0wned")</script> <b>Syntax</b>'; }

Angularは値を安全でないと認識し、自動的にサニタイズします。これにより_<script>_タグは削除されますが、_<script>_タグのテキストコンテンツや_<b>_要素などの安全なコンテンツは保持されます。

だから、はい、それは安全だと思います。

7

私が確認する。

私は次の<div [innerHTML]="<span (touch)=() => {alert('Code has been successfully executed on client from external malicious input');}">test xss</span>"></div>を試しました

何も実行されず、DOM検査では、角度によって(タッチ)がスパンから削除されたことが示されます。大丈夫だよー ;-)

4