Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/70.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
Html 重定向中明显的安全缺陷?_Html_Servlets_Video_Https_Security - Fatal编程技术网

Html 重定向中明显的安全缺陷?

Html 重定向中明显的安全缺陷?,html,servlets,video,https,security,Html,Servlets,Video,Https,Security,我有一个存储视频的web应用程序。我正在使用一个Javaservlet(通过https)来验证用户名和密码。一旦验证了详细信息,我将用户重定向到AWS S3中存储的视频。对于那些不知道S3如何工作的人来说,它只是一个存储对象的web服务(基本上认为它是存储文件的)。它还使用https。显然,为了实现这一点,s3对象(文件)是公共的。我给它起了一个随机的名字,上面写满了数字和字母 因此servlet基本上如下所示: void doGet(request, response){ if (aut

我有一个存储视频的web应用程序。我正在使用一个Javaservlet(通过https)来验证用户名和密码。一旦验证了详细信息,我将用户重定向到AWS S3中存储的视频。对于那些不知道S3如何工作的人来说,它只是一个存储对象的web服务(基本上认为它是存储文件的)。它还使用https。显然,为了实现这一点,s3对象(文件)是公共的。我给它起了一个随机的名字,上面写满了数字和字母

因此servlet基本上如下所示:

void doGet(request, response){
   if (authenticateUser(request.getParameter("Username"), request.getParameter("Password")){
      response.sendRedirect("https://s3.amazonaws.com/myBucket/xyz1234567.mp4");
   }
}

这显然是简化了,但它把重点讲清楚了。这里有没有非常明显的安全漏洞?视频标签显然有一个类似“我”的来源&Password=“randomletters”。乍一看,如果我给AWS s3上的文件名提供足够随机的名称,它似乎应该和其他任何东西一样安全?

明显的安全缺陷是,任何人都可以检测到身份验证servlet重定向到哪个URL,并与他的所有朋友共享此URL,因此,允许任何人直接访问资源,而无需通过euthentication servlet


不幸的是,我根本不了解S3,因此我不能推荐任何解决安全问题的方法。

明显的安全漏洞是,任何人都可以检测到身份验证servlet重定向到哪个URL,并与所有朋友共享此URL,从而允许任何人直接访问资源,无需通过euthentication servlet


不幸的是,我根本不了解S3,所以我不能推荐任何解决安全问题的方法。

这种机制所做的只是提供了一个非常有限的混淆-在大多数现代浏览器(或Fiddler等代理)中使用开发工具,用户将能够观看正在加载的视频的URL,如果它在公共S3存储桶中,然后简单地分享链接

对于S3,唯一真正的解决方案是保护bucket,然后要求用户登录或使用临时令牌进行访问[http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html] ... 虽然这会使你的解决方案复杂化


我还想提到的是,在视频资源的链接(来自上面的问题)上以明文形式包含密码和用户名是非常不安全的

这种机制所做的只是提供了非常有限的混淆-在大多数现代浏览器中使用开发人员工具(或代理,如Fiddler)用户将能够观看正在加载的视频的URL,如果它位于公共S3存储桶中,则只需共享链接即可

对于S3,唯一真正的解决方案是保护bucket,然后要求用户登录或使用临时令牌进行访问[http://docs.aws.amazon.com/AmazonS3/latest/dev/RESTAuthentication.html] ... 虽然这会使你的解决方案复杂化


我还要提到的是,在视频资源的链接(来自上面的问题)上以明文形式包含密码和用户名是非常不安全的

当你说“任何人”时,你的确切意思是什么?我让用户使用用户名和密码登录我的网站。视频标签由javascript生成,并将用户名和密码添加为参数(我应该在原始帖子中添加)。因此,从技术上讲,用户可以按照你说的做,但他们也可以向所有朋友提供密码。从实际的角度来看,安全漏洞是什么?如果用户向所有人提供密码,您可以在服务器端注意到,同一个帐户从许多不同的IP加载了大量视频,并阻止该帐户。如果任何人无需登录就可以访问视频,那么您无法阻止任何人,并且登录是无用的。知道视频的实际URL只是在浏览器中点击F12的一种方法,转到“网络”选项卡,查看执行了哪些HTTP请求。我认为动态加载的URL不会存储在历史记录中。在这种情况下,用户没有动机提供链接、URL等,他们上传的是他们的数据,希望保持隐私。我对历史的理解错了吗?@user:是的,获取URL是小菜一碟。即使是非技术用户也可以通过浏览器来实现。当你说“任何人”时,你的确切意思是什么?我让用户使用用户名和密码登录我的网站。视频标签由javascript生成,并将用户名和密码添加为参数(我应该在原始帖子中添加)。因此,从技术上讲,用户可以按照你说的做,但他们也可以向所有朋友提供密码。从实际的角度来看,安全漏洞是什么?如果用户向所有人提供密码,您可以在服务器端注意到,同一个帐户从许多不同的IP加载了大量视频,并阻止该帐户。如果任何人无需登录就可以访问视频,那么您无法阻止任何人,并且登录是无用的。知道视频的实际URL只是在浏览器中点击F12的一种方法,转到“网络”选项卡,查看执行了哪些HTTP请求。我认为动态加载的URL不会存储在历史记录中。在这种情况下,用户没有动机提供链接、URL等,他们上传的是他们的数据,希望保持隐私。我对历史的理解错了吗?@user:是的,获取URL是小菜一碟。即使是非技术用户也可以只用浏览器来完成。