在我目前的项目中,我需要能够上传图像并将其保存在S3等商店中,并在保存图像之前执行一些操作(调整大小等)。我还在抓住应该怎么做。
我想创建一个单独的服务器来进行这个图像处理和上传以降低我的主应用程序服务器上的负载,我不知道我是应该这样做还是我应该但我只是解决了一个想象的可扩展性问题。
无论如何,我需要一种方法来限制上传到图像服务器。我在想,因为我不需要分发密钥来在应用程序和图像服务器之间创建共享密钥。此秘密将用于创建令牌,这些令牌将提供给客户端以在有限的时间内上传图像。
如果映像服务器中的端点收到用于身份验证的共享密钥并创建上载令牌,那么安全性是否足够?
将这两台服务器都放在https上是否足以确保在中间攻击中无法窃取一名男子的秘密?
我可能在这里有一些关于安全性和加密的误解,但如果有人可以帮助我或者提供一些对这种情况有益的读取,我会很高兴。
谢谢!
据我了解,您希望允许用户将图像上传到您的网站,一旦上传,您希望以某种方式处理它(调整大小等)。如果这是正确的,这是我建议的工作流程。
让主应用程序服务器为S3上载创建预先签名的URL。将此预签名URL发送给客户端。客户端将能够上传到S3。上传完成后,在后台进行处理(从S3-process-upload获取)。
这样,您就可以避免必须处理上传令牌。 S3还支持预签名URL的时间限制。
我想创建一个单独的服务器来进行这个图像处理和上传以降低我的主应用程序服务器上的负载,我不知道我是应该这样做还是我应该但我只是解决了一个想象的可扩展性问题。
在这种情况下分离逻辑是有意义的。我不会创建一个新的服务器,只是一个图像处理的后台进程。如果你需要扩展,你总是可以启动多个这样的后台进程。
如果映像服务器中的端点收到用于身份验证的共享密钥并创建上载令牌,那么安全性是否足够?
如上所述,使用S3接收图像上传。客户端将直接上传到S3,它将为您处理安全问题。
将这两台服务器都放在https上是否足以确保在中间攻击中无法窃取一名男子的秘密?
HTTPS提供的机密性足以防止中间人嗅探您的流量。使用AWS的预先签名的URL,您也不会通过所谓的签名发送秘密。这里有intro to the topic和Amazon's own documentation更多信息。