是否可以在应用程序级别限制请求域?

时间:2010-12-06 16:24:13

标签: security http

我想知道一些视频流网站如何限制只在某些域上播放的视频。更一般地说,某些网站如何仅响应来自某些域的请求。

我查看了http://en.wikipedia.org/wiki/List_of_HTTP_header_fields并看到了可能使用的引荐来源字段,但我知道HTTP标头可能会被欺骗(可以吗?)

所以我的问题是,这可以在应用程序级别完成吗?根据应用程序,我的意思是,例如,部署在服务器上的Web应用程序,而不是网络路由器的操作系统。

任何编程语言都可以用于答案。我只是好奇这是怎么做的。

如果有什么不清楚,请告诉我。或者您可以利用它作为一个机会,教我如何清楚地指出问题。

2 个答案:

答案 0 :(得分:1)

关于ip信息的HTTP标头是有帮助的(因为只有一小部分是伪造的)但是不可靠。通常,Web应用程序使用Web框架,这使您可以轻松访问这些框架。

获取源信息的一些方法:

  • 来自ip / tcp网络堆栈本身的ip-address:问题是这个服务器可见的地址必须与真实客户端地址不匹配(它可能来自公司代理,匿名代理,大型ISP .. 。)。
  • HTTP X-Forwarded-For标头,代理应该设置此标头来解决上面提到的问题,但它也可能是伪造的,或许多匿名代理根本没有设置它。
  • 除了ip-source信息之外,您还可以使用机器标识符(有些使用User-Agent Header。例如,有几个站点存储此计算机标识符并将其存储在Flash Cookie中,因此他们可以重新识别召回客户端以阻止它但同样的故事:这是不可靠的,可以伪造。

源问题是您需要很多安全复杂性来安全地识别客户端(例如,通过身份验证和基于客户端的证书)。但这是很大的努力并且增加了很多可用性问题,因此很多站点都没有这样做。大多数情况下,这不是一个问题,因为只有一小部分客户正在绞尽脑汁伪造和访问服务器。

HTTP Referer是另一回事:它向您显示用户来自哪个页面。它包含在浏览器中。它也是不可靠的,因为内容可能已损坏而且有些客户端根本不包含它(我记得有几个IE浏览器版本正在跳过Referer)。

答案 1 :(得分:0)

这些类型的控件基于原始IP地址。从IP地址,可以确定国家/地区。找出IP地址需要访问低级协议信息(例如,从套接字)。

当您单击从一个站点到另一个站点的链接时,referrer标头是有意义的,但使用编程库构建的典型HTTP请求不需要包含此链接。