重定向明显的安全漏洞?

时间:2013-04-05 17:04:48

标签: html5 servlets video https security

我有一个存储视频的网络应用。我正在使用java servlet(通过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");
   }
}

这显然已经简化了,但它得到了重点。这里有任何非常明显的安全漏洞吗?视频代码显然会有https://www.mysite.com/getVideo?Username=“Me”和密码=“randomletters”之类的来源。乍一看,似乎它应该像其他任何东西一样安全,假设我给AWS s3的文件名提供足够随机的名字?

2 个答案:

答案 0 :(得分:3)

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

不幸的是,我根本不认识S3,因此我不建议修复安全问题。

答案 1 :(得分:0)

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

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

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