【问题标题】:Stop browser caching images to disk停止浏览器将图像缓存到磁盘
【发布时间】:2016-06-09 12:18:08
【问题描述】:

我正在开发一个本地应用程序,它显示来自安全本地服务器的敏感图像,我需要确保这些图像只能在我的 Web 应用程序中查看 - 所以我不希望它们存储在磁盘上(通过缓存或类似的东西那个)。

这是我的响应标头(nodejs express):

res.header("Cache-Control", "no-cache, no-store, must-revalidate");
res.header("Pragma", "no-cache");
res.header("Expires", "0");
res.send(image);

这是我获取图像并渲染它的 AngularJS 代码。我使用 AJAX 是因为我通过 JWT 对用户进行身份验证,所以我需要包含 auth 标头。

$http.get(src, {
    responseType: 'arraybuffer'
})
.then(function(res){
    var headers = res.headers();
    var blob = new Blob([res.data], {
        type: headers['content-type']
    });

    image.src = $window.URL.createObjectURL(blob);
});

它似乎有效,但我对 Chrome 和 Firefox 开发人员工具向我展示的内容感到困惑。我需要 100% 确定这些图像没有存储在磁盘上。

但我明白了:

Status Code: 200 OK (from cache)

Chrome Dev Tools Image

我在 chrome://cache 选项卡中看不到图像,但我担心我在网络监视器中看到(来自缓存)。

在我的 Firefox 缓存查看器中,我看到了图像的 url,但设备列显示“内存”。任何正在查看内存的人都可以在一段时间后查看它,尤其是在用户注销之后?

Firefox cache viewer

所以我想我真正的问题是当我创建一个 blob 时这两个浏览器在做什么?任何人都可以在浏览器之外访问这些图像吗?它在移动/平板设备上做什么?

如果我使用 base64 字符串传输图像,在隐私和安全方面会更安全还是更差?

【问题讨论】:

  • 除了缓存...你知道如果他们真的想要用户可以简单地将图像保存到磁盘?
  • 用户可以对文档进行截图。
  • “如果我使用 base64 字符串传输图像,在隐私和安全方面会更安全还是更差?” – 完全一样.
  • 缓存会发生什么,如果在图像加载后你会做 $window.URL.revokeObjectURL(image.src) ?它会从缓存中消失吗?
  • @deceze 确实如此,但用户已经被授权查看图像,因此如果他们将其保存到磁盘/截屏,这是他们的责任。我只是想知道应用程序是否在设备上留下了图像的痕迹。

标签: javascript google-chrome firefox caching browser


【解决方案1】:

Yoy 可以通过jpg.js 将jpg blob 转换为canvas 图像数据,然后将其加载到canvas 中,并且不使用图像,在这种情况下,没有任何图像和资源可以通过HTTP 加载。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-05
    • 2011-11-07
    • 1970-01-01
    • 2013-02-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多