如何保护恶意用户的图像

时间:2016-05-01 03:56:24

标签: flash

所以我的游戏有大约300多张图片,它们都是从SWF文件中的子域加载的。现在他们做的是他们使用"检查元素"使用Chrome浏览器并转到网络并在新选项卡中打开它们以获取所需的图像。他们无法像在SWF网页中那样右键单击并保存图像,因为它是基于SWF文件浏览器的游戏。

我想知道的是,如果我们阻止他们以某种方式查看我们网站上的文件,但仍允许他们加载到游戏中?我不确定是否可以通过仅允许我们的主域从子域获取文件而不允许人们访问http://sub.mydomain.com/image.png并保存图像来完成此操作。

2 个答案:

答案 0 :(得分:0)

由于互联网如何运作,技术上是不可能的。当有人访问您的网站时,他们的浏览器会发出取回图片的请求。所以在这一点上,图像就位于他们的计算机某处,而且很可能是暂时的。因此,通过查看他们拥有的图像"下载它"。

话虽这么说,你可以通过以下方式使事情变得更加困难(通过默默无闻的安全性):

  1. 需要自定义用户代理(具体取决于您获取游戏图像的方式,这可能很难)。
  2. 仅在发送特定标题时返回图像(#1的更通用版本)。
  3. 为每张图片创建一次性密钥的映射。密钥必须存在于请求中(作为标头或查询参数)。每次请求图片时,密钥都会更改,因此他们无法将链接复制到浏览器中的新标签页。
  4. 使用混淆的JavaScript使用svgs创建图像 - 无需下载图像文件。
  5. 如果HTTP方法为@locations.pictures.first.image.urlPOST以外的其他方式,则仅返回图像。公平地说,这个有点奇怪(尽管所有这些都是),所以我不推荐它。
  6. 每次加载时重命名图像文件(类似于关键概念)。
  7. 在一天结束时虽然这些只是障碍,但确定的用户仍然可以获得图像,几乎任何用户都可以截取图像。所以它可能不值得你花时间。

答案 1 :(得分:0)

一种方法是混淆图像的字节。这意味着故意混合字节然后让你的游戏SWF加载字节,重新调整它们并显示输出。

由于图像仅在SWF应用程序在运行时“修复”它们时才可见,因此任何通过URL获取图像文件的人都会以损坏的图像结束。现在唯一的解决方法是知道完全你的游戏代码对这些字节做了什么,使它们可以显示。

非常基本的例子
编写一个程序,给定一个文件的字节将占用10个字节&反向排序它们,保持接下来的10个字节正常(即:跳过它们),反向排序下一个10并跳过下一个10等等。将图像保存到服务器。现在你的SWF被编程为知道每10个字节反向排序(已经反转回正常顺序),跳过10等等。它在加载所述图像字节后执行此操作。而不是通常的load bytes, decode format and show pixels(会失败),它应该加载字节,修复混乱的字节,然后解码并显示像素。

PNG的前10个字节开头如下: 89 50 4E 47 0D 0A 1A 0A 00 00但是如果你反转它们,它们看起来像00 00 0A 1A 0A 0D 47 4E 50 89。现在尝试用那些(反向)前10个字节打开一个PNG文件,每个程序都会告诉你这是一个无效的图像。内容小偷感到沮丧。

仅此一点可能对您有所帮助,但有些人可能会知道他们是否知道PNG字节。改变哪些字节被混淆以及频率变得很聪明,因此模式不容易明显。