angular - 使用 DomSanitizer 绕过 Angular 中的安全性时,如何安全地避免 Angular 中的 XSS 攻击?
问题描述
有时我们需要防止Angular 代码中的自动清理。使用 DomSanitizer非常简单。但是,如果代码真的很安全,我总是不太舒服。我发现了一些与 Angular Security 相关的文章,并且我通常会努力避免安全漏洞,但大多数时候都是凭直觉,所以仍然存在一些问题。
例如:
我们可以信任指向资产目录(或内部资源)的资源 url 吗?如何防止攻击者:
- 更改资产目录中的安全资源?
- 用不安全的网址替换安全网址(或安全资源网址)?当我需要这样做时,我通常会在方法中插入绕过代码(这样就够了吗?):
getSafeResourceUrl(trustedUrl: string) { return this.domSanitizer.bypassSecurityTrustResourceUrl(trustedUrl); }
将安全的 html 标签插入到方法内的已清理代码中是否安全?例如,下面的代码展示了管道实现的转换方法,其中搜索字符串被清理并被
<em>
标签包围:transform(value: string, search: string): SafeHtml { const sanitizedValue = this.sanitized.sanitize( SecurityContext.HTML, value + ''); if (!search) { return sanitizedValue; } const sanitizedSearch = this.sanitized.sanitize( SecurityContext.HTML, search); const result = sanitizedValue.replace( new RegExp(sanitizedSearch, 'gi'), (match) => '<em>' + match + '</em>'); return this.sanitized.bypassSecurityTrustHtml(result); }
更广泛地说,是否有一些指南可以安全地绕过自动 Angular 清理?
解决方案
推荐阅读
- reactjs - 解决:反应错误:超过最大更新深度
- azure-cognitive-search - Azure 认知搜索:DateTime 字段的构面“值”
- c# - EF Core 2.2 如何更改/扩展 Oracle 数据提供者的默认翻译行为
- neo4j - 从 neo4j 中的所有节点中删除属性键
- qt - 如何在 QT 和 Windows 10 中添加新的 MinGW 编译器作为工具包
- x11 - 从具有 UI/X11 转发支持的远程 SSH 到 WSL2
- response - 行动特征。频道在智能家居上获得错误的频道
- swift - 将 .MOV 视频文件作为 POST 请求的一部分发送到自己的服务器作为 Swift 中的 multipart/form-data 请求的一部分不起作用
- javascript - 如何将数组元素附加到DOM?
- python - reques.POST.get,总是不返回