如何确保从服务器端返回的img无法被截获

时间:2011-12-13 12:59:09

标签: javascript flash encryption

在我们的应用程序中,我们有一个Web服务,它会根据参数将图像返回给客户端。

现在,我们要确保未经许可的用户无法使用该图像,并且无法通过网络拦截该图像。

所以我们要加密服务器端的图像,当客户端获取图像时,应该相应地解密。但是,我们的应用程序是基于浏似乎在浏览器中我们无法使用javascript来解码图像流。

假设每个调用该服务的客户端绝对安全。

我们尝试在页面中使用隐藏的闪存,这可能会解除图像并将其保存到本地,然后在页面中显示它们,这将使用js和flash之间的通信。

但是我们必须使用除c#或java之外的flash语言来解密图像。

所以我想知道是否有任何解决方案可以满足我的要求?

如果还有其他更好的方式吗?

更新

我们的服务图像服务:

http://xxx/getImage?row=1&col=3

此网址是公开的,因此任何人都可以使用此服务与不同的参数。

即使我们添加如下关键参数:

http://xxx/getImage?row=1&col=3&key=SDSGSDSKDFEKYESLWQODLSFKDS

我们遇到两个问题: 1)其他人如何知道这个密钥,即使我们将密钥与ip或mac地址绑定。

2)用户如何直接抓取http包?然后他不需要知道任何参数,他可以拦截整个图像的蒸汽。

UPDATE2

是否有使用服务器端和客户端的解决方案?

那就是说,使用闪存是否有效?

3 个答案:

答案 0 :(得分:2)

通过HTTPS而不是未加密的HTTP为图像以及调用图像的整个页面提供服务。

无需涉及任何类型的客户端编程。 SSL加密支持内置于浏览器中。

  

其他人如何知道密钥,即使我们将密钥与ip或mac地址捆绑在一起。

他们没有。这就是秘密密钥的重点。

  

用户如何直接抓取http包?然后他不需要知道任何参数,他可以拦截整个图像的蒸汽。

他们不能。这就是SSL加密的重点。

答案 1 :(得分:1)

我不知道你的特殊要求。它是为了节省带宽,以便如果有人窃取您的图像,它将不会花费您或您只是想保护图像?

因为如果那是后来就忘了它。一旦图像在互联网上显示,任何东西都不会阻止它传播。如果您在Flash应用程序中显示它,用户将只使用(printscreen)并将其粘贴到新图像中。如果您不使用闪光灯,用户只需右键单击,然后选择“将图像保存到”。

现在,如果它是第一点,那么在99%的情况下,请求的引用者上的简单检查服务器端就足够了。如果你真的想隐藏网址,那么就没有简单的解决办法了。您必须创建一个脚本服务器端,根据您给他的密钥发送图像。

类似于:Bob进入页面A - > (服务器知道该页面包含图像A和图像B并为Bob生成2个密钥) - >图片网址是/image.aspx?key=mykeytoimageA - > 5分钟后密钥被禁用。

答案 2 :(得分:-1)

任何服务器端编程语言都可以返回图像。所以,假设您正在使用PHP。

您可以调用PHP来获取图像:

<img src="get_image.php?id=12" />

在PHP文件中,您将获得安全验证,然后将标题设置为“image / *”

您可以使用几乎任何服务器端语言执行此操作。只需搜索“langauge x中的返回图像类型”