【问题标题】:Delete a Signed URL manually with PHP (Google Cloud)使用 PHP (Google Cloud) 手动删除签名 URL
【发布时间】:2022-08-02 22:42:47
【问题描述】:

我想知道是否有一种方法可以从 Google Cloud 的 PHP 库中手动销毁签名的 URL,或者在生成中指定一些参数来指定“第一次打开链接时,销毁它”。

此时我发现只有一个“时间”来设置签名 URL 的生成,没有别的。

谢谢

    标签: php google-cloud-platform google-cloud-storage signed-url


    【解决方案1】:

    有没有办法手动销毁签名的 URL?

    您需要删除服务帐户钥匙这可能会有几分钟的延迟,并且还会使其他签名的 URL 无效。

    签名 URL 的验证是通过公钥和时间戳进行的。如果时间戳没有过期,剩下的就是删除公钥,这需要删除服务帐户的私钥。

    如果签名 URL 是由 Google 托管服务帐户密钥生成的,则您必须删除该服务帐户。

    【讨论】:

    • 清楚,因此最好的方法是将时间戳设置为从生成签名 URL 开始的几秒钟,并让签名 URL 在该时间段后失效。
    • @tidpe - 将时间戳设置为所需的长度,不再设置。您的问题并未表明如何使用签名 URL。如果由机器人(软件)使用,您可能可以估计使用链接的时间。如果是人类,你怎么知道?我在我的网站上使用了一个技巧。我将服务器上的 URL 传递给客户端。当他们单击链接时,它会转到我的后端,然后创建签名的 URL 并 307 重定向客户端。这可确保签名 URL 不需要长期存在。
    • 谢谢,这就是我创建它的方式:它应该由用户使用,当用户需要它时,我只是创建它并向用户提供内容。
    【解决方案2】:

    我的解决方法是重命名对象.重命名后,所有旧的签名 URL 将不再起作用,服务帐户仍然完好无损。
    (在这里查看我的完整答案:https://stackoverflow.com/a/73209023/16550663

    关于生成一次性 url,我认为它有点复杂,因为它取决于浏览器。一些预检 OPTIONS 请求或 HEAD 请求将在实际访问之前发送到该 url(GET、POST、PUT、..)。所以这很难或几乎不可能,尤其是对于谷歌云存储。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-01-12
      • 1970-01-01
      • 2019-06-11
      • 1970-01-01
      • 2017-09-16
      • 1970-01-01
      • 2019-09-08
      相关资源
      最近更新 更多