我正在Web应用程序中设置一些文件上传,我将这些文件作为base64数据存储在后端。我还显示了以以下格式上传的文件的链接:
<a href="{{doc.data}}">{{doc.name}}</a>
文档看起来像这样:
doc = {
name: 'example.pdf',
data: 'application/pdf;base64,JVBERi0xLjUNCiW...'
}
用于上传的输入接受图像和PDF。
现在,当单击图像文件的链接时,此方法非常有效,但对于PDF,链接前加了“不安全”字样,因此Angular必须清除此绑定。我做了一个小矮人来演示: https://next.plnkr.co/edit/mWQwSQGXXTjMDIGj?open=lib%2Fapp.ts&deferRun=1。尝试上传图片和pdf文件,然后尝试使用链接下载它们时会发现区别。
经过一番研究,我知道我可以绕过使用的消毒处理
bypassSecurityTrustResourceUrl(doc.data)
但是我对此表示怀疑。问题来了:
在我的情况下,绕过URL卫生是否安全?为什么?
为什么PDF的URL值被标记为不安全,而图像的URL值却不被标记?
消毒剂在查看resourceURL时会检查什么?它是否“不安全”在其上带有“应用程序”一词的所有URL,因为它可能包含脚本?
谢谢。