Javascript 如何确保服务器端返回的img不被截获

Javascript 如何确保服务器端返回的img不被截获,javascript,flash,encryption,Javascript,Flash,Encryption,在我们的应用程序中,我们有一个web服务,它将根据参数向客户端返回图像 现在,我们要确保该图像不能被未经许可的用户使用,也不能通过网络被截获 因此,我们希望在服务器端对图像进行加密,当客户端获得图像时,应该对其进行相应的解密。然而,我们的应用程序是基于浏览器的。在浏览器中,我们似乎不能使用javascript来减少图像流 假设调用服务的每个客户端都是绝对安全的 我们尝试在页面中使用隐藏的flash,这可能会删除图像并将其保存到本地,然后在页面中显示它们,这将使用js和flash之间的通信 但是我

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

现在,我们要确保该图像不能被未经许可的用户使用,也不能通过网络被截获

因此,我们希望在服务器端对图像进行加密,当客户端获得图像时,应该对其进行相应的解密。然而,我们的应用程序是基于浏览器的。在浏览器中,我们似乎不能使用javascript来减少图像流

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

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

但是我们必须使用flash语言而不是c#或java来取消图像的类型

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

还有没有其他更好的方式

更新:

我们的图像服务器服务:

http://xxx/getImage?row=1&col=3
此url是公共的,因此任何人都可以使用不同参数的此服务

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

http://xxx/getImage?row=1&col=3&key=SDSGSDSKDFEKYESLWQODLSFKDS
然后我们遇到两个问题: 1) 如果其他人知道这个密钥呢,即使我们用ip或mac地址绑定这个密钥

2) 用户如何直接绘制http包?然后他不需要知道任何参数,他就可以截取整个图像

更新2

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


也就是说,使用flash是否有效?

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

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

其他人知道这个键怎么样,即使我们把密钥与ip或mac地址绑定起来

他们没有。这就是秘密钥匙的意义所在

用户如何直接绘制http包?然后他不需要知道任何参数,他就可以截取整个图像


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

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

您可以调用PHP获取图像:

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

在PHP文件中,您需要进行安全验证,然后将标题设置为键入“image/*”


您几乎可以用任何服务器端语言来实现这一点。只需搜索“返回langauge x中的图像类型”

我不知道您的具体要求。是为了节省带宽,这样如果有人偷了你的图像,你就不会为此付出代价,还是你只是想保护图像

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

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


例如:Bob进入页面A->(服务器知道此页面包含图像A和图像B,并为Bob生成2个密钥)->图像url为likes/image.aspx?key=mykeytoimageA->密钥在5分钟后被禁用。

黑客是否知道url,例如:“”?由于图像服务器的服务是公开的,我们希望即使是黑客也知道图像的url,他只会得到加密的图像。将Flash应用程序(或任何东西)交给任何要求它的客户端都不会有帮助。您需要对URL保密(对公众保密)或使用某种形式的身份验证。@hguser-更新了答案作为回应。这似乎是个好主意。https安全吗?一个不能被截获的密钥吗?密钥应该在5分钟后被禁用:)这里真正的问题是你的目标。您无法保护internet上的图像。最好的解决方案是水印。顺便说一句,我们假设调用我们服务的客户端是安全的,所以我们不关心他们是否将图像保存到本地。对于您的方式,“image.aspx?key=mykeytoimageA”,一旦从网络请求,它就可以被拦截。因此,我们认为最好的方式是在客户端对图像进行加密和解密。。。并防止密钥在调用一次后再次工作。(顺便说一句,电子书销售商就是这样做的。您生成一个下载令牌,该令牌只在短时间内有效,并且是一次性使用的。然后您通过https发送内容)