我看到有相互矛盾的报道,说在Angular2 +中使用[innerHTML]标记很危险。现在还是这样吗?还是已经解决?
例如,此代码很危险:
<div [innerHTML]="post.body"></div>
Run Code Online (Sandbox Code Playgroud)
Gui*_*ère 10
我确定。
我只是尝试了以下
<div [innerHTML]="<span (touch)=() => {alert('Code has been successfully executed on client from external malicious input');}">test xss</span>"></div>
没有执行任何操作,DOM 检查显示 (touch) 已通过 angular 从跨度中移除。都很好 ;-)
就像它在这里所说的那样(在角度站点中),它似乎没有任何担心,因为角度可以自动识别不安全的值并对其进行消毒。
这是那里写的:
插值内容始终被转义-HTML不会被解释,浏览器在元素的文本内容中显示尖括号。
对于要解释的HTML,将其绑定到HTML属性,例如innerHTML。但是,将攻击者可能控制的值绑定到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>元素的文本内容。
所以我认为是的,这很安全。
| 归档时间: |
|
| 查看次数: |
12110 次 |
| 最近记录: |