如何设置Filestack安全上传图像?

时间:2016-02-26 03:20:37

标签: javascript image-uploading

我一直在尝试为Filestack图片上传设置基本安全性。

从其文档https://www.filestack.com/docs/security/create-policy开始, 我需要生成哈希消息验证码,我不知道下一步该做什么,并且那里没有一个很好的例子。

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

2 个答案:

答案 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()

输出将是您可以用来访问文件的策略和签名:

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

答案 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