今天在使用的 VUE + plupload 做阿里云OSS上传时,一直有个问题纠结着我 在上传文件时:开发者模式》 Network 明显可以检测到: policy OSSAccessKeyId signature 这3个数据
如上图,当用户上传文件时,检测到这个数据后就完全可以把这个记下来,然后随意的无限制无脑上传文件,甚至获取OSS文件目录,删除文件,在OSS创建目录等等!
而我前端想限制上传文件的大小,类型等在暴露这个后毫无用处
我已经吧这个记录下来写死到 代码中测试了 完全可以不收任何限制的胡乱上传!
请问这种情况如何才能安全有效的限制用户行为?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
面对您提到的安全问题,确保阿里云OSS上传过程安全且可控的关键在于合理设计和实施权限管理策略。以下是一些建议来帮助您增强安全性:
使用STS(Security Token Service)临时凭证:不要直接在前端使用长期的AccessKey和SecretKey,而是通过后端服务生成STS临时凭证分发给前端。STS凭证具有有效期限制,并且可以细粒度地控制用户权限,比如只允许上传、下载或列出特定Bucket下的文件等。这样即使凭证被截获,攻击者也只能在有效期内进行有限的操作。
前端验证与后端校验相结合:虽然前端的限制可以被绕过,但仍然需要在前端实现基本的文件类型、大小验证,以提供即时反馈给用户。同时,在后端接收上传请求时再次进行严格的校验,确保只有符合规则的文件才能通过STS凭证上传到OSS。后端校验是安全的最后一道防线。
利用OSS的Bucket Policy和ACL(Access Control List):通过设置Bucket Policy和Object ACL,您可以进一步细化对OSS资源的访问控制。例如,限制某个Bucket只能由特定的用户或角色进行写入操作,或者仅允许从特定的IP地址访问等。
启用OSS的跨域资源共享(CORS)策略:如果您需要支持跨域上传,可以通过配置CORS规则来限制哪些源可以发起请求,以及允许哪些HTTP方法,从而增加一层防护。
日志监控与报警:利用阿里云的Log Service或OSS的事件通知功能,监控上传活动,设置异常行为的报警机制。一旦发现有非预期的上传行为,立即采取措施。
定期审计与凭证轮换:定期检查您的STS策略和AccessKey使用情况,及时回收不再使用的凭证,并周期性地更换AccessKey以降低风险。
综上所述,通过结合使用STS临时凭证、前后端双重验证、细致的OSS策略配置、日志监控及定期审计等手段,可以显著提升您的OSS上传流程的安全性。