如何设置文件堆栈安全性上传图像
How to setup Filestack security uploading images?
我一直在尝试为文件堆栈图像上传设置基本安全性。
从其文档 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
- Rails File_field最大堆栈大小
- d3中堆栈函数和嵌套函数之间的差异
- 是什么让一个“;Uncaught RangeError:超过了最大调用堆栈大小“;错误(Chrome,在其他浏览器中显示
- 为什么我的JavaScript堆栈排序函数不起作用
- 超过了async.detect最大调用堆栈大小
- 如何远程检查JavaScript应用程序的函数调用堆栈
- $https请求的安全性
- java,javascript签名的小程序(文件选择,ftp上传)安全性/套接字异常
- 超过了最大调用堆栈大小,循环无限
- Fresh Spark Install+Homestead上的Vue异步堆栈跟踪错误
- 超过了最大调用堆栈大小.递归标签
- 使用MEAN堆栈-查询MongoDB并将值作为变量传递
- 日志:未捕获的范围错误:超过了最大调用堆栈大小
- JavaScript代码中的安全性
- 是否排除节点中错误堆栈的第一行?/节点中的自定义错误类型
- 打印javascript控制台的堆栈跟踪
- js函数堆栈传入变量,.hide()不起作用
- ember.js:转换到相同的路由会产生堆栈溢出问题
- 如何在整个web应用程序堆栈中利用Haskell类型的安全性
- 如何设置文件堆栈安全性上传图像