在这种情况下,绕过Angular环境卫生是否会使我的Web应用程序暴露于XSS? Angular是否将包含“应用程序”的任何资源URL标记为不安全?

时间:2019-05-28 19:25:26

标签: angular security xss sanitization

我正在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,因为它可能包含脚本?

谢谢。

0 个答案:

没有答案