有用户反馈,存在非法用户盗用她们的 token 在空间上传 svg,xml,html 等垃圾文件,注入广告,或者散播涉黄视频等资源,严重影响了用户业务的正常运营,针对此类问题,这边总结了如下处理方案。
通过上传策略限制上传
a.上传策略中 scope 指定 key 值,只允许用户上传指定 key 的文件
参数说明:
python 示例:
from qiniu import Auth, put_file
access_key =""
secret_key = ""
# 构建鉴权对象
q = Auth(access_key, secret_key)
# 要上传的空间
bucket_name = '2'
key = 'key'
#获取token的方法指定key
token = q.upload_token(bucket_name, key, 3600)
#put方法必须指定相同key才能上传
ret, info = put_file(token, key, 'localfilepath')
print ret
b.上传策略中 insertOnly 指定为 1 或者指定 forceInsertOnly 为 true,只允许用户上传指定 key ,并且不允许修改
参数说明:
字段名 | 说明 |
---|---|
insertOnly | 默认为0,指定为 1 时,上传指定 key 的文件,并且不允许修改,即上传相同 key ,不同 hash,返回 614 “file exists”,上传相同 key,相同 hash 仍旧返回 200 |
forceInsertOnly | 默认为 False ,指定为 True 时,上传指定 key 的文件,并且不允许修改,只允许上传一次,即上传相同 key,相同 hash 仍旧返回 614 “file exists”, |
python 示例:
from qiniu import Auth, put_file
access_key =""
secret_key = ""
# 构建鉴权对象
q = Auth(access_key, secret_key)
# 要上传的空间
bucket_name = 'bucket'
key = 'key'
#insertOnly 指定为 1
policy = {"insertOnly":1}
#获取token的方法指定key
token = q.upload_token(bucket_name, key, 3600, policy)
"""
#forceInsertOnly 为 true
policy = {'forceInsertOnly':True}
# 注意 forceInsertOnly是新增字段,这时候生成token的方法中 strict_policy 这个参数设置成False才能生效
token = q.upload_token(bucket_name, key, 3600, policy, strict_policy=False)
"""
#put方法必须指定相同key才能上传
ret, info = put_file(token, key, 'localfilepath')
print ret
c.上传策略中指定 mimetype ,限制上传文件类型
参数说明:
python 示例:
from qiniu import Auth, put_file
access_key =""
secret_key = ""
# 构建鉴权对象
q = Auth(access_key, secret_key)
# 要上传的空间
bucket_name = 'bucket'
key = 'key'
#限制mimeLimit
policy = {
"insertOnly":1,
"mimeLimit":"image/*" #只允许上传图片文件
}
#获取token的方法指定key
token = q.upload_token(bucket_name, key, 3600, policy)
#put方法必须指定相同key才能上传
ret, info = put_file(token, key, 'localfilepath')
print ret
文档反馈
(如有产品使用问题,请 提交工单)