我一直在尝试为Filestack图片上传设置基本安全性。
从其文档https://www.filestack.com/docs/security/create-policy开始, 我需要生成哈希消息验证码,我不知道下一步该做什么,并且那里没有一个很好的例子。
在客户端使用api密钥,任何人都可以使用它将图像上传到我的FileStack存储或Amazon S3。如何设置从我的域中上传图像的Filestack安全性?
答案 0 :(得分:2)
为了在Filestack中使用安全性,您需要首先从Filestack开发人员门户获取您的密钥。不要公开此密钥,因为它不应像API密钥一样公开。
当您需要执行Filestack操作时,应在未向用户公开的函数中生成策略。
例如,如果我需要读取安全的Filestack链接,
https://www.filestackapi.com/api/file/KW9EJhYtS6y48Whm2S6D
我需要为其附加有效的政策和签名。
以下是一些Python代码,它将为handle = 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()
输出将是您可以用来访问文件的策略和签名:
答案 1 :(得分:0)
您需要在安全的地方生成签名,例如后端,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');
您可以将其包装在具有更多验证的函数中,以在代码库的不同位置使用它。或者,您可以使用String#gsub
之类的软件包最终到达网址应采用以下格式:
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