在没有JavaScript中的数据URL的情况下,将斑点的一部分绘制为HTML画布



我正在使用WebApp测试一些东西,用户可以在其中看到几个图像,但并非全部所有图像。整个数据被发送给客户端并解密客户端。然后,数据在base64中,所以我简单地使用:

img.src = 'data:image/jpeg;base64,' + imgdata;

为了显示它。那我可以打电话

my2Dcontext.drawImage(img, x, y, width, height)

一切都很好,对吧?

除非没有,原始完整数据非常容易下载。只需从图像复制数据源,然后下载或打开检查器并以这种方式下载。

因此,我想知道我如何可以想象将imgdata的数据从屏幕上获取,而不必将其放在屏幕上。

是否有任何方法可以从数据上渲染一部分图像,而无需创建诸如完整图像数据URL之类的东西?

我知道这是一个奇怪的情况,但是如果你们有任何创意,我会非常感谢它!

(p.s,我知道这本质上是通过默默无闻的安全性,如果它们可以在屏幕上分别显示零件,它们只能将它们整理在一起。我只是想停止最简单的提取水平。谢谢)

好吧,您实际上不能从确定获取图像的用户中保护显示的图像。然后,一个简单的屏幕抓取工具可用于将图像的图块/部分整理在一起。高级用户可以注入脚本以自动执行相同的操作。

但是,为了创造性的方法:

图像数据混淆

可以选择在交付前将数据本身混淆,以便如果尝试下载 source ,它将没有用。当在画布上显示时,您可以"解码"数据使其正确显示(但然后再次转介返回屏幕抓取工具,选项用户必须将画布保存为图像等)。

混淆并不一定很复杂,您需要找到一种算法,该算法可以与源的位图数据混乱,并且同样是一种将其放回正常的方式 - 这当然会随身携带诸如JPEG等有损格式的挑战;这里几乎需要PNG(我是否提到更高级的(?)用户也可以提取解码内容的代码)。

视频加密(EncryptedMediaExtensions API)

另一种方法是将图像作为视频流(每个部分都是框架)提供受DRM保护的。此 May 在屏幕抓取者的情况下会取决于OS/硬件支持等,但不要押注(即使浏览器支持DRM)...

没有DRM,这只是获取视频并使用诸如FFMPEG之类的工具来提取每个帧的问题。

水印

至少在库存照片领域中,广泛采用的解决方案是为每个预览和瓷砖加水印。这将升级游戏,并迫使确定的用户启动Photoshop或类似的东西,并花更多的时间来删除它们。结果可变。

在您的情况下,这可能不适合或不适合。

值?

就个人而言,我不会花时间尝试这样做。

很快就会做出的努力。

根据目的,水印瓷砖/零件(在源)可能是更有效的解决方案。

您可以确保用户只能访问允许的内容的唯一方法就是仅给他们。

因此,您需要在服务器上处理并切片图像,然后重新备份到客户端。

相关内容

  • 没有找到相关文章

最新更新