如何设置文件堆栈安全性上传图像

How to setup Filestack security uploading images?

本文关键字:安全性 堆栈 图像 文件 何设置 设置      更新时间:2023-09-26

我一直在尝试为文件堆栈图像上传设置基本安全性。

从其文档 https://www.filestack.com/docs/security/create-policy,我需要生成哈希消息身份验证代码,但我不确定下一步该怎么做,那里没有一个很好的例子。

通过在客户端使用 api 密钥,任何人都可以使用它将图像上传到我的 FileStack 存储或 Amazon S3。如何设置文件堆栈安全性,从我的网域上传图片?

为了对文件堆栈使用安全性,您需要首先从文件堆栈开发人员门户获取密钥。不要公开此密钥,因为它不应该像您的 API 密钥那样是公开的。

当您需要执行文件堆栈操作时,应在未向用户公开的函数中生成策略。

例如,如果我需要读取一个安全的文件堆栈链接,

https://www.filestackapi.com/api/file/KW9EJhYtS6y48Whm2S6D

我需要为其附加有效的策略和签名。

下面是一些 Python 代码,它将为句柄 = KW9EJhYtS6y48Whm2S6D 的文件生成策略和签名

# Python Example
import hmac
import hashlib
import time
import base64
# import json
json_policy = '{"handle":"KW9EJhYtS6y48Whm2S6D","expiry":1508141504}'
policy = base64.urlsafe_b64encode(json_policy)
print policy
print
secret = 'Z3IYZSH2UJA7VN3QYFVSVCF7PI'
print hmac.new(secret, policy, hashlib.sha256).hexdigest()

输出将是可用于访问该文件的策略和签名:

https://www.filestackapi.com/api/file/KW9EJhYtS6y48Whm2S6D?signature=4098f262b9dba23e4766ce127353aaf4f37fde0fd726d164d944e031fd862c18&policy=eyJoYW5kbGUiOiJLVzlFSmhZdFM2eTQ4V2htMlM2RCIsImV4cGlyeSI6MTUwODE0MTUwNH0=

您需要在安全的地方生成签名,例如后端、lambda 函数或类似的东西。

如果您使用的是 Node,下面是如何创建和使用策略和签名的示例。

const crypto = require('crypto'); // built-in Node module
let policyObj = {
        expiry: Date.now() + 36000;
        call: ['read', 'convert'],
    }
let policyString = JSON.stringify(policyObj);
let policy = Buffer.from(policyString).toString('base64');
let signature = crypto.createHmac('sha256', YOUR_SECRET_HERE).update(policy).digest('hex');

您可以将其包装在一个具有更多验证的函数中,以便在代码库的不同位置使用它。或者你可以使用像filestack-policy这样的包

最终到达网址应采用以下格式:

https://cdn.filestackcontent.com/bfTNCigRLq0QMOrsFKzb?policy=<POLICY>&signature=<SIGNATURE>

或者如果您使用文件堆栈存储别名,则采用以下格式:

https://cdn.filestackcontent.com/APIKEY/security=p:<policy>,signature:<signature>/src://STORAGE-ALIAS/PATH-TO-YOUR-FILE