【发布时间】:2018-05-29 11:44:00
【问题描述】:
我刚开始在一家新公司工作,有人要求我做我认为不可能的事情,但我需要对此进行确认。我公司的网站允许用户使用 SVG 以极高的分辨率查看图像。我们为这些图像构建了一个自定义查看器,允许您缩放和滚动图像,并且效果很好。因此,图像格式“需要”保持为 SVG。但是,我们需要在此图像中添加水印。我们现在这样做的方式是将 SVG 和 PNG 水印传递给客户端,将水印插入 SVG,并将其显示给用户。任何有客户端经验的人都知道,这显然很容易被黑(这里的开发团队大多是年长的开发人员,没有太多的网络经验)。即使原始 SVG 没有被截获,他们仍然可以从源中删除水印。我已经说服我的老板在服务器端注入水印,所以这就留下了最终客户端可编辑 SVG 的问题。
我想知道的是这两种情况之一是否可行:
1) 是否有另一种类似于 SVG 的图像格式可以用来保持这种高度可扩展的图像而不会丢失分辨率,并且它不会被最终客户端直接编辑?人们似乎在网上讨论的唯一选项是 JPG、GIF、PNG 和 SVG。我已经查看了 Adobe Illustrator“.ai”文件和 EPS(封装 PostScript)作为其他矢量选项,但是如果我可以在 PHP 中修改这些图像,我找不到任何地方,如果我想在其中覆盖水印,这是关键服务器端代码。
2) 有没有办法混淆原始 SVG 内容,使用户无法去操作它?我已经看到 SVG 内部有 <image ...> 标签,而 PNG 之前表示为长而复杂的字符串。像xlink:href="data:image/png;base64..." 这样的东西。我想知道是否有办法将 SVG 显示为这个字符串,这样就不能直接操作数据。我确信有一种算法可以逆转这些,但只要我们坚持使用 SVG,如果有人想窃取数据,我需要通过尽可能多的箍来确保它尽可能安全。
任何一种方式都是可以接受的,只要删除此水印比按 F12 并删除开发工具中的元素更复杂。
标签: security image-processing svg