0

可能是一个普遍的问题,即使它特定于某种类型的网站/应用程序,但无论如何都会给它一个机会。我有点困惑我是否应该为我当前的项目缓存我的缩略图,通常我会,但我不确定这个项目。我会更好地解释我的情况,以便更好地理解。

我有一个库存照片网站,用于名人、新闻和体育照片,向授权客户(报纸和杂志)展示我们的整个图书馆。这些照片有一定的价值,我已经采取了很好的措施来确保较大的照片要么隐藏在 Amazon S3 上,要么隐藏在根目录之上,带有过期和散列链接,所以我不想通过添加缓存来危及我的照片当我不应该或添加不正确的缓存时。一个典型的用户可能会搜索一张照片而再也看不到它,或者他们可能会将一张照片保存到他们的收藏夹并每天看两次。用户还可以在几分钟内浏览 10,000 张照片。

我的问题是;我应该根本没有缓存还是只有有限的缓存,比如 1 小时或 1 天?如果我为照片设置了缓存到期,我的客户是否可以在他们的浏览器上访问,比如“缓存的图像”?缓存有价值的照片是否还有其他安全问题?

我知道抓屏、打印和规则;如果您不希望它被盗,请不要将其放在网络上,但我想在我的应用程序中尽我所能确保安全性和速度。

我正在使用 PHP (5.2.17) 使用 PHPReadFile()和 IMG 元素(如<img src="loadImage.php?p=2342dfsfsdfwf2dfsf">.

澄清什么类型的缓存:

<?php
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Content-Type: image/jpeg");
readfile($url);
?>
4

1 回答 1

2

如果您非常关心图像的安全性,那么我会说不要以使用更多带宽(以及更慢的加载时间)为代价来缓存它们。如果您更关心带宽使用而不是安全性,请缓存它们。

然而,如果它们是真正的缩略图,那么如果它们很小、质量低等,它们对用户应该没有什么价值。一种解决方案是给图像加水印。

理论上,可以从浏览器的缓存(http://protechgeek.com/how-to-extract-images-from-browser-cache/)中提取图像,因此如果它们被缓存,则可以检索它们。更简单的是,有人可以像您提到的那样进行屏幕抓取,或者右键单击并复制/粘贴。水印是解决此问题的唯一方法。

tl;博士

在我看来,我认为为了最小的安全性增加而增加额外的带宽和增加加载时间是不值得的。改用水印。大多数库存照片网站都使用水印是有原因的——它们是防止某人彻底窃取图像的唯一方法(尽管,根据图像和水印,熟练的 Photoshop 用户可以令人信服地删除它)

于 2012-07-23T02:47:24.843 回答