【问题标题】:Prevent regeneration of S3 pre-signed URLs防止重新生成 S3 预签名 URL
【发布时间】:2021-07-25 21:43:34
【问题描述】:

我的应用上有附件功能。用户可以使用 Slingshot 将文档上传到 S3,然后单击一个按钮,该按钮会打开一个模式和一个显示附件的轮播。

来自 S3 的 downloadUrls 存储在 Mongo 中,我有一个模板助手将它们吐出,然后 each 将它们放入轮播中。实际上,这一切都非常流畅。

但是,我想使用签名 URL 来提高安全性。我的问题是单击按钮以显示模式实际上每次都会创建一个子模板。这个子模板然后调用一个方法来创建和返回签名的 url。这效率不高。

理想情况下,我希望模态和轮播保持反应性。这样用户就可以上传一个新文档,然后在不刷新页面的情况下查看它。但是——同时,我不想再辞去一堆文件。

我采用的是使用 Session Var 的方法,然后在 url 之间进行比较以查看它们是否已更改。但这似乎不对。我必须注意,浏览器确实将这些上传缓存在轮播中(它们主要是图像)。所以我不太关心实际签名网址的过期时间。

有什么想法吗?我已经阅读了一些关于使用 timefreeze 来早于签名的 url 的模式。所以你只有在超过过期日期时才重新创建。但是,这种模式仍然会调用 md 服务器端并仍然执行 s3.getSignedUrl fn..

谢谢!

【问题讨论】:

  • 如果我们看到您现在拥有的代码,会更容易提出建议。模态通常不会重新创建,而只是隐藏和显示。还是您希望它在会话之间保留?

标签: javascript node.js security amazon-s3 meteor


【解决方案1】:

我将模态与父模板分开。然后 - 我使用了本地集合而不是 Sessions。在 Modal.shown 上,我只是检查本地集合的长度,如果它不存在,那么我会调用服务器来获取签名的 url。这应该保证它被调用一次。

然后可以将新的 S3 文件插入到这个新的本地集合中。这一切都使事情发生反应。

我有 atm 的最干净的解决方案

【讨论】:

    猜你喜欢
    • 2016-12-14
    • 1970-01-01
    • 2020-06-06
    • 2017-07-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-19
    • 2019-12-14
    相关资源
    最近更新 更多