【发布时间】:2016-04-19 03:05:21
【问题描述】:
我需要使用 s3 在社交网络类型的服务中存储来自用户的内容并管理访问。
到目前为止,这是我想做的:
- 客户端告诉 LAMP 服务器他要上传文件
- LAMP 进行身份验证,并为用户可以上传的 s3 生成一个预签名的 url。它还使用私钥创建该密钥的加密版本。然后它添加这个密钥,以及在 mysql 表中启动它的用户(以及它的启动时间)
- LAMP 然后将密钥和数字签名从 2. 发送到客户端。
- 客户端然后将文件上传到 s3
- 完成后,他告诉 LAMP 该文件已完成。它发送密钥和数字签名。
- LAMP 确保密钥和签名匹配。如果他们这样做了,LAMP 就知道客户对提供给他的密钥是诚实的(而且他不是随机生成的)
- LAMP 然后检查 s3 以确保具有该键的文件存在,如果存在,则删除在 2 中添加的行。
我的问题是:
- 上述数据流是否存在严重缺陷,效率低下?
- 如何确保只允许用户上传有效文件(如 png、jpg、pdf 等)。我认为仅检查扩展名是不够的,因为它可能会被更改
【问题讨论】:
标签: php mysql amazon-web-services amazon-s3