解决angular 报错 url unsafe
遇到报错
使用的img 标签出现了报错
<img class="img-thumbnail" [src]="qrCodeSrc"/>
报错这个url 为 unsafe
XSS
首先先了解为什么会出现unsafe
为了系统性的防范 XSS 问题,Angular 默认把所有值都当做不可信任的。即 unsafe
跨站脚本(XSS)允许攻击者将恶意代码注入到页面中。这些代码可以偷取用户及其登录数据数据,还可以冒充用户执行操作。它是 Web 上最常见的攻击方式之一。
比如,如果某个攻击者能把 <script> 标签插入到 DOM,就可以在你的网站上运行任何代码。
又比如其他的一些标签
<img alt="" src="...">
<a href="javascript:..."。
如果攻击者所控制的数据混进了 DOM,就会导致安全漏洞。
Angular 将对这些值进行消毒(Sanitize
),对不可信的值进行编码。
如果我们认为这个值是安全的,可以采用下列方法把这个值标记为安全,‘
注入 DomSanitizer
服务,然后调用下面的方法之一,就可以把一个值标记为安全。
- bypassSecurityTrustHtml
- bypassSecurityTrustScript
- bypassSecurityTrustStyle
- bypassSecurityTrustUrl
- bypassSecurityTrustResourceUrl
解决方法: 消毒
this.qrCodeSrc = this.sanitizer.bypassSecurityTrustUrl(url);
<img class="img-thumbnail" [src]="qrCodeSrc"/>
但是消毒后,url
加上了 localhost
和 %22
为什么会加上localhost?
原因:
src 的若不是http, https, ftp...等开头,会被认为是相对路径,实际导向时就会被加上http://域名/
出现的%22 , 根据谷歌找到是表明 双引号
所以最后的结果是因为: url前面出现了双引号 , 导致被认为是相对路径, 自动加上localhost.
解决: 去掉双引号
this.qrCodeSrc = this.sanitizer.bypassSecurityTrustUrl(src.replace(/\"/g, ""));
被 1 篇内容引用
622 声望
104 粉丝
推荐阅读
为什么要有Java 内存模型,是什么, 解决了什么
Java内存模型(Java Memory Model,JMM) 定义了 java 运行时如何与硬件内存进行交互,比如规定了一个线程如何看到其他内存修改后共享变量的值。一些高级特性也建立在JMM的基础上,比如volatile 关键字。
weiweiyi赞 3阅读 477
Angular之父为什么怼React?
大家好,我卡颂。前几天,Angular之父Miško Hevery和Dan在推上发生了一段有趣的对话,对话背景大概是:传统SSR(服务端渲染)场景下使用的技术叫Hydration,Miško曾向Dan演示了一个新技术概念 —— ResumableDan认...
卡颂赞 2阅读 718评论 2
Angular 16 正式版发布
在之前的Angularv15中,Angular团队通过将独立API从开发者预览版升级至稳定版,在Angular的简易性和开发者体验方面达到了一个重要的里程碑。如今,Angular将继续这一改进的势头,发布了自Angular最初推出以来最大...
xiangzhihong赞 2阅读 599
Chatgpt 对程序员而言有这些妙用
ChatGPT是一种基于人工智能技术的对话机器人,可以在各种场景下辅助用户解决问题,提高效率。对于程序员而言,ChatGPT的智能化和语义理解能力,可以帮助他们更好地完成编程工作。
气势凌人的柿子赞 2阅读 432
关于 Angular 应用的 Bootstrap 过程
在 Angular应用程序中,客户端的bootstrap过程是指启动应用程序时的一系列步骤,以加载和初始化应用程序所需的所有资源,并将应用程序渲染到浏览器上。
JerryWang_汪子熙赞 2阅读 298
记录开发微信扫码登录过程遇到的问题(功能尚未完成)
微信对接的基本流程是:微信服务器向开发者在微信公众平台提供的服务器地址发送请求,然后服务器返回原样给微信服务器请求内容,微信服务器验证通过后对接成功。因为这个过程中涉及到了微信服务器向服务器发起请...
chshihang赞 3阅读 167
Angular动态表单首页列表
前言之前已经介绍过:动态表单的构建动态表单的数据库的结构如何将数据库中的数据渲染出表单具体可以参考之前两篇文章,本文内容如下:显示动态表单的首页列表数据的增改效果演示:stackBlitz: [链接]1、申请类型不...
chshihang赞 3阅读 577
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。