全新的安全标头:功能策略

0
3380


功能策略将能够允许网站启用或禁用某些浏览器功能

上周,安全研究员Scott Helme发布了一篇博客,第一次向全世界介绍了功能策略。功能策略是一个全新的安全标头,能够允许网站所有者启用和禁用某些web浏览器功能,并且不仅仅是他们自己的网页,而且还包括那些他们所嵌入的网页。

功能策略的工作原理是通过HTTP响应头提供。如同创建其他的标头一样,利用这种方法创建标头也十分简单,网站所有者只需确定他们想要限制的功能,然后再构建该策略就可以了。以下是Helme所列举的一个例子:

Feature-Policy: vibrate \”self\”; usermedia \”*\”; sync-xhr \”self\” example.com

在Helme的例子中,Vibrate功能伴随的是“self”,除了网站所有者自己的来源以外,其他所有的来源都会被禁用。同样地,sync-xhr功能也仅限于“自我”来源,而“usermedia”能够被所有来源所允许。

对于选择来源,网站所有者有三种选择:

  • *——这一来源将允许当前的页面和所有嵌套的浏览器上下文使用该功能
  • Self——这会限制当前的页面使用该功能,也包括其他所有嵌套的浏览上下文,前提是它们位于同一个来源上。
  • 无——这会完全禁用当前页面和其他所有嵌套的浏览上下文使用该功能。

此外,使用功能策略还可以启用或禁用以下功能:

  • 地理位置
  • midi
  • 通知
  • 推送
  • sync-xhr
  • 麦克风
  • 照相机
  • agnetometer
  • 陀螺仪
  • 扬声器
  • 振动
  • 全屏
  • 支付

这一列表随时都会变化,因此随着浏览器功能不断增多,你很有可能会看到它们被纳入其中。

对iFrames更多的精细控制

功能策略的一个好处是你可以使用它们来对诸如iFrames等的内容采取更多的控制。如果你愿意,你甚至可以应用一个完全不同的策略来启用特定iFrames上的功能。

例如,你可以在父级别上禁用某个功能,然后再在特定iFrames上启用它。Helme给了以下这个例子,它将会在站点级别禁用振动功能,然后仍旧会在特定iFrames上启用它:

到目前为止,功能策略已经获得了Chrome和Safari两大浏览器的支持。