用于在单独的服务器中验证文件上传的共享密钥

时间:2019-02-21 09:53:19

标签: image security token image-uploading

在我当前的项目中,我需要能够上传图像并将其保存在S3之类的商店中,并在保存图像之前执行一些操作(调整大小等)。我仍在掌握该怎么做。

我当时正在考虑创建一个单独的服务器来进行图像处理和上传,以降低我的主应用程序服务器上的负载,我不知道该做还是应该做,但我只是在解决一个虚构的问题可伸缩性问题。

无论哪种方式,我都需要一种限制上传到图像服务器的方式。我一直在想,因为我不需要分发密钥即可在应用程序和图像服务器之间创建共享机密。该秘密将用于创建令牌,这些令牌将提供给客户端以在有限的时间内上传图像。

如果我在图像服务器中的端点接收到用于身份验证和创建上传令牌的共享密钥,是否足以确保安全性?

两个服务器都通过https是否足以确保没有办法在中间攻击中窃取一个男人的秘密?

我可能对安全性和密码学有一些误解,但如果有人可以帮助我或为我提供一些适合这种情况的阅读材料,我将非常高兴。

谢谢!

1 个答案:

答案 0 :(得分:1)

据我了解,您希望允许用户将图像上传到您的网站,并且一旦上传,您希望以某种方式(调整大小等)对其进行处理。如果这是正确的,我建议您使用此工作流程。

让主应用程序服务器为S3上传创建一个预签名的URL。将此预签名的URL发送给客户端。客户端将能够上传到S3。上传完成后,请与工作人员在后台进行处理(从S3-process-upload获取)。

这样,您可以避免必须处理上传令牌。 S3还支持对预签名URL的时间限制。

  

我当时正在考虑创建一个单独的服务器来进行图像处理和上传,以降低我的主应用程序服务器上的负载,我不知道该做还是应该做,但我只是在解决一个虚构的问题可扩展性问题。

在这种情况下,将逻辑分开是有意义的。我不会创建新服务器,而只会创建用于图像处理的后台进程。如果需要扩展,可以随时启动多个此类后台进程。

  

如果我在图像服务器中的端点接收到用于身份验证和创建上传令牌的共享密钥,是否足以确保安全性?

如上所述,请使用S3接收图像上传。客户将直接上传到S3,它将为您处理安全性。

  

两个服务器都通过https是否足以确保没有办法在中间攻击中窃取一个男人的秘密?

HTTPS提供的机密性足以防止中间人嗅探您的流量。使用AWS的预签名URL,您也不会发送秘密,而是所谓的签名。这是intro to the topicAmazon's own documentation的更多信息。