Html 重定向中明显的安全缺陷?
我有一个存储视频的web应用程序。我正在使用一个Javaservlet(通过https)来验证用户名和密码。一旦验证了详细信息,我将用户重定向到AWS S3中存储的视频。对于那些不知道S3如何工作的人来说,它只是一个存储对象的web服务(基本上认为它是存储文件的)。它还使用https。显然,为了实现这一点,s3对象(文件)是公共的。我给它起了一个随机的名字,上面写满了数字和字母 因此servlet基本上如下所示: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
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是小菜一碟。即使是非技术用户也可以只用浏览器来完成。