java S3对象url可以被任何人访问,如何保护它?

hgqdbh6s  于 2023-05-12  发布在  Java
关注(0)|答案(2)|浏览(194)

当我在java中将我的userdocumentseoMap到userdocumentsdto时,我得到了像https://s3.amazonaws.com/approves3/44/IMG_0189.jpg这样的文档上传URL。
任何人都可以打开此链接,无论用户是否是我网站的成员。这不安全。如何保护?

e0bqpujr

e0bqpujr1#

AWS提供good documentation,说明如何使用CloudFront为S3资产实施身份验证。

vfwfrxfs

vfwfrxfs2#

此答案假定您只允许应用程序用户访问资源。如果不是这样,你可能需要问更具体的问题。
这个链接可以打开任何人是否用户是我的网站的成员
如果您将资源公开,则基本上允许任何未经身份验证的访问。不管你的应用程序或不。
保护资源的默认(建议)方法是将对象设为私有,并使应用程序创建一个签名的(临时)URL。
https://docs.aws.amazon.com/sdk-for-java/latest/developer-guide/examples-s3-presign.html

GetObjectRequest getObjectRequest = GetObjectRequest.builder()
                   .bucket(bucketName)
                   .key(keyName)
                   .build();

               GetObjectPresignRequest getObjectPresignRequest = GetObjectPresignRequest.builder()
                   .signatureDuration(Duration.ofMinutes(60))
                   .getObjectRequest(getObjectRequest)
                   .build();

               PresignedGetObjectRequest presignedGetObjectRequest = presigner.presignGetObject(getObjectPresignRequest);
               String theUrl = presignedGetObjectRequest.url().toString();

相关问题