Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xcode/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios AWS S3公共对象与私有对象?_Ios_Xcode_Swift_Amazon Web Services_Amazon S3 - Fatal编程技术网

Ios AWS S3公共对象与私有对象?

Ios AWS S3公共对象与私有对象?,ios,xcode,swift,amazon-web-services,amazon-s3,Ios,Xcode,Swift,Amazon Web Services,Amazon S3,回到S3,我的bucket中有我将在应用程序中呈现的图像的URL,但它们是私有的。当我试图点击链接时,它显示“访问被拒绝”。当我将链接的设置更改为public时,它会通过,但是我读到公共访问并不是最安全的。这基本上是一个由两部分组成的问题 1) bucket中的公共链接/对象和私有链接/对象有什么区别 2) 我如何使我的bucket中的私有链接/对象对我自己和我的用户都可访问?私有对象需要身份验证;公共对象不会 关于你的评论“公共访问不是最安全的”,你通常需要考虑一些事情来决定是否使S3对象公开

回到S3,我的bucket中有我将在应用程序中呈现的图像的URL,但它们是私有的。当我试图点击链接时,它显示“访问被拒绝”。当我将链接的设置更改为public时,它会通过,但是我读到公共访问并不是最安全的。这基本上是一个由两部分组成的问题

1) bucket中的公共链接/对象和私有链接/对象有什么区别


2) 我如何使我的bucket中的私有链接/对象对我自己和我的用户都可访问?

私有对象需要身份验证;公共对象不会

关于你的评论“公共访问不是最安全的”,你通常需要考虑一些事情来决定是否使S3对象公开:

  • [少校]有人可以下载吗?如果对象的内容是您不应该与世界共享的内容,例如用户的家庭照片,那么答案是“否”
  • [次要]您是否希望每次有陌生人下载某个对象时付费。作为bucket所有者,您需要为数据转出付费(除非您选择“请求者付费”,在这种情况下,请求者需要进行身份验证)
  • 至少有两种方法可以让用户使用私有S3对象,而不让整个世界都可以访问它们:

  • 为对象使用有时间限制的预签名URL(请参阅)
  • 代理对象自己下载,以便所有对象请求都转到应用服务器,因此可以限制为经过身份验证的会话

  • 为了更好地解释我的情况,我的应用程序让用户通过parse注册,但是图像是从s3托管的。一旦他们注册,他们就可以自由地查看图像。那么,公共链接是最好的吗?或者,如果图像是公共的,那么任何具有URL的人都可以绕过您的系统下载该图像。例如,您的任何用户都可以通过博客帖子与1000多人共享图像URL。我不知道这对你来说是否是个问题。我的问题是,如果url是加载到集合视图单元格中的图像,他们如何绕过我的系统?严格来说只是一个UIImageView。要直接从S3获取对象,你的应用程序必须发出HTTP请求。该请求可以在许多地方被记录或拦截。理想情况下,您的图像加载器将使用HTTPS,但这不是重点。关键是,如果您正在检索的图像不是公共的,例如,如果您的用户希望这些图像不会公开,那么您需要将它们设置为私有。如果您提供更多关于您从S3服务的对象的信息,可能会有所帮助。我从S3服务的对象是文章、杂志等的缩略图。