2017-09-04 178 views
2
  1. 在CSP v2中frame-src已被棄用。 建議使用child-src
  2. 在CSP v3 frame-src in undeprecated和child-src已被棄用。
  3. 目前(SEP 2017)鉻:

的「兒童SRC」指令使用,將在M60被刪除,圍繞2017年八月請使用「腳本的src」指令的工人,而不是。CSP:child-src和frame-src已棄用

那麼,在現代(減2版本)瀏覽器中工作的指令集合是什麼?看起來像frame-src + script-src夠了嗎?但是應該在script-src呢?

PS:是否合法的「不贊成」的東西?

回答

3

它比問題中描述的要複雜得多,因爲CSP3規範還引入了the worker-src directive。但該規範給出了the following guidance

child-src模型實際上已經被變更:

  1. frame-src指令,這是在CSP 2級過時,已經undeprecated,但繼續推遲到child-src如果不目前(依次依次爲default-src)。
  2. 已添加指令worker-src,如果不存在則推遲到script-src(它同樣依次默認爲src)。
  3. child-src現已棄用。

這是在https://w3c.github.io/webappsec-csp/,這是一個編輯的草案,但什麼是你應該總是對目前的規範要求進行磋商。原因:您不能相信https://www.w3.org/TR/CSP/是最新的(並且一般而言,您不能相信https://www.w3.org/TR下的任何內容都是最新的),編輯器的草稿是瀏覽器實現者實際實現的內容(他們不等待實現直到按照https://www.w3.org/TR發佈的東西)。

反正child-src指令被棄用的原因是its effect is specified as

孩子-SRC指令管轄的嵌套瀏覽上下文(例如和<frame>導航)和工人執行上下文的創建。

在實際中的問題是:iframe與工作人員腳本非常不同。因此,這就是爲什麼worker-src被添加的原因,並且爲什麼frame-src未被棄用(因爲您確實需要一個單獨的指令來指定iframe元素的策略)以及爲什麼child-src已被棄用(因爲您確實不希望將一個策略應用於iframe元素和工人腳本)。

那麼在現代(減2版本)瀏覽器中工作的指令集合是什麼?

看來,答案似乎取決於你想要爲什麼指定一個策略。

  1. 如果您的需求很簡單,所以你不想爲iframe元素和腳本有不同的政策,那麼就使用default-src指定兩個相同的策略。
  2. 如果您的需求更加複雜,並且您希望iframe元素的策略與其他資源的策略不同,則使用frame-src。同樣,如果您需要的策略與其他資源的策略不同,請使用script-src
  3. 如果您不希望工作人員腳本的策略與其他腳本的策略不同,那麼您只需提供script-src策略即可,並且可以在此停止。
  4. 如果您要需要工作人員腳本的策略不同於其他腳本的策略,那麼除了提供script-src策略之外,還應提供worker-src策略。 worker-src一個不會影響瀏覽器,但是當瀏覽器確實會添加支持時,它將會適應未來。

PS:這是甚至合法的「undeprecate」的東西?

是的。雖然我不記得有沒有看到其他規範或工作組這樣做,但在這種情況下這是正確的做法 - 因爲CSP規範作者和工作組意識到child-src是一個錯誤,而frame-src實際上是必需的,它這是一個錯誤,以貶低它。

因此,他們解開了這些錯誤 - 並且相對較快。爲什麼它在這種情況下工作的一部分是:frame-src沒有被棄用足夠長的時間讓瀏覽器不得不放棄對它的支持,而且很多Web開發人員從未開始使用child-src開始。