gpt4 book ai didi

javascript - 为什么我无法强制下载受污染的 Canvas ?为什么这是一个安全问题?

转载 作者:行者123 更新时间:2023-12-03 07:04:26 28 4
gpt4 key购买 nike

为什么我无法强制下载受污染的 Canvas ,为什么这是一个安全问题?

以这个示例为例:在 example.com(我的域的示例)上,我可以下载一个 JSON 文件并读取它。

我可以从 example.org(其他人的域的示例)加载带有 src 的图像。我可以将该图像绘制到 Canvas 上(此时它会被污染),并且我仍然可以在该 Canvas 上绘制。

我的页面的访问者可以右键单击该 Canvas 并将图像另存为。

污点只是为了阻止图像数据进入 JavaScript 吗?

为什么数据(JSON)可以,而图像不行?

在 JavaScript 中,我可以通过转换为数据 URL、创建链接元素并让 JavaScript 单击它来自动开始下载 Canvas 。

有没有办法在没有“安全问题”的情况下实现相同的结果,我想自动下载 Canvas ,就像用户右键单击“图像另存为”一样,我不需要 JavaScript 中的图像数据。因为它只是在 Canvas 上绘制了一个图表,该 Canvas 已被来自另一个域的基本图像污染。

最佳答案

它仅与安全相关(与版权无关)。我们可以从 this article看到跨域限制的主要目的是:

The principal intent for this mechanism is to make it possible forlargely unrestrained scripting and other interactions between pagesserved as a part of the same site (understood as having a particularDNS host name, or part thereof), whilst almost completely preventingany interference between unrelated sites.

下面几段(我的重点):

In theory, the model seems simple and robust enough to ensure properseparation between unrelated pages, and serve as a method forsandboxing potentially untrusted or risky content within a particulardomain [...]

本文没有特别提到 Canvas ,但对于 Canvas 来说,它与抓取当前显示在选项卡(不同来源)中的内容有关,并将其发送回恶意第三方,然后恶意第三方可以看到该内容(例如,诸如银行对账单、一些帐户信息和排序之类的东西 - 无论如何都是理论上的)。

<强> MDN 将这种类型的攻击概括如下:

This protects users from having private data exposed by using imagesto pull information from remote web sites without permission.

但是对于不同的源服务器,这不会带来任何风险,它们可能允许跨源使用,这就是为什么在某些情况下我们可以请求将属性/属性 crossOrigin = "anonymous" 添加到图像中标签/元素。

在任何一种情况下,我们都可以在 Canvas 中显示图像并执行诸如转换图像之类的操作,即使它被污染了,但如果被污染,我们无法提取任何数据或使用getImageData从中读取像素信息()toDataURL()toBlob()

避免限制

要避免其他网站的此限制,您必须设置一个页面代理,它代表您的页面执行图像请求,然后将其不受任何限制地提供给您的页面。这当然会增加带宽和加载时间。

另一种方法是简单地将图像上传到您自己的服务器或服务器设置以允许跨域使用。在这种情况下,您将无法将其用作安全攻击面,但您自己可能会成为侵权违规的目标,具体取决于合理使用、许可等(否则与 CORS 本身无关)。

CORS规范可以在 here找到

关于javascript - 为什么我无法强制下载受污染的 Canvas ?为什么这是一个安全问题?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36888453/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com