Angular 针对 XSS
Angular against XSS
我想使用 Angular 我发现了关于安全性的:https://angular.io/guide/security
只有使用 angular 才能保护您免受所有 XSS 攻击,对吗?
无论数据来自数据库还是用户输入?
TL;DR - 是的,有点。这取决于您使用的 Angular 版本。
默认不受信任
今天,Angular 对您插入到模板中的每个变量使用 sanitize 函数,除非您另有说明(使用旁路函数)。
该函数本身使用起来非常安全,它涵盖了 大多数 的上下文,包括 - HTML、Style(CSS)、hrefs(来自 javascript:例如)。
此外,Angular 将通知您(使用浏览器控制台)"sanitize" 函数所做的每项更改。
Angular 不会掩护你
使用服务器端模板创建 HTML,或在资源 URL 中使用模板注入(例如
如何解决?
有很多技术,但当今最安全和最先进的是 CSP (content-security-policy), you can create and evaluate your CSP using a tool that Google created
旧版本 Angular
中的 XSS
在 Angular (such as 1.5) 的旧版本中,存在一系列 "template injection" 漏洞,即恶意使用可以使用 {{}} 括号来注入他自己的控制输入作为 HTML。
例如,如果用户使用此模板:
<p class="e2e-inner-html-interpolated">{{username}}</p>
他可以选择用户名 "alert(alert(document.cookie))",结果将是:
<p class="e2e-inner-html-interpolated"><script>alert(alert(document.cookie))</script></p>
意味着他可以将 HTML 直接注入页面本身。
Angular 多年来一直试图修复它,但收效甚微(直到几个版本之前)。
尽管使用 Angular 通常可以降低 XSS 攻击的可能性,但我们不能说您完全没有风险。例如,ViewChild
and ViewChildren
warns you about using the ElementRef.nativeElement
. They propose to use safe Renderer2
functions instead of accessing the nativeElement raw DOM functions and attributes, like innerHTML
.
的文档
我想使用 Angular 我发现了关于安全性的:https://angular.io/guide/security 只有使用 angular 才能保护您免受所有 XSS 攻击,对吗? 无论数据来自数据库还是用户输入?
TL;DR - 是的,有点。这取决于您使用的 Angular 版本。
默认不受信任
今天,Angular 对您插入到模板中的每个变量使用 sanitize 函数,除非您另有说明(使用旁路函数)。 该函数本身使用起来非常安全,它涵盖了 大多数 的上下文,包括 - HTML、Style(CSS)、hrefs(来自 javascript:例如)。 此外,Angular 将通知您(使用浏览器控制台)"sanitize" 函数所做的每项更改。
Angular 不会掩护你
使用服务器端模板创建 HTML,或在资源 URL 中使用模板注入(例如
如何解决?
有很多技术,但当今最安全和最先进的是 CSP (content-security-policy), you can create and evaluate your CSP using a tool that Google created
旧版本 Angular
中的 XSS在 Angular (such as 1.5) 的旧版本中,存在一系列 "template injection" 漏洞,即恶意使用可以使用 {{}} 括号来注入他自己的控制输入作为 HTML。 例如,如果用户使用此模板:
<p class="e2e-inner-html-interpolated">{{username}}</p>
他可以选择用户名 "alert(alert(document.cookie))",结果将是:
<p class="e2e-inner-html-interpolated"><script>alert(alert(document.cookie))</script></p>
意味着他可以将 HTML 直接注入页面本身。 Angular 多年来一直试图修复它,但收效甚微(直到几个版本之前)。
尽管使用 Angular 通常可以降低 XSS 攻击的可能性,但我们不能说您完全没有风险。例如,ViewChild
and ViewChildren
warns you about using the ElementRef.nativeElement
. They propose to use safe Renderer2
functions instead of accessing the nativeElement raw DOM functions and attributes, like innerHTML
.