Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/370.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 内容安全策略标题的*.example.com是否也与example.com匹配?_Javascript_Html_Security_Content Security Policy - Fatal编程技术网

Javascript 内容安全策略标题的*.example.com是否也与example.com匹配?

Javascript 内容安全策略标题的*.example.com是否也与example.com匹配?,javascript,html,security,content-security-policy,Javascript,Html,Security,Content Security Policy,假设我在mywebsite.com上设置了此标题: Content-Security-Policy: script-src self https://*.example.com 我知道它将允许https://foo.example.com和https://bar.example.com,但它是否允许https://example.com一个人吗 看着 主机,如example.com(与主机上的任何资源匹配,无论方案如何)或*.example.com(,与主机上的任何资源或其任何子域匹配)(及其

假设我在
mywebsite.com
上设置了此标题:

Content-Security-Policy: script-src self https://*.example.com
我知道它将允许
https://foo.example.com
https://bar.example.com
,但它是否允许
https://example.com
一个人吗

看着

主机,如example.com(与主机上的任何资源匹配,无论方案如何)或*.example.com(,与主机上的任何资源或其任何子域匹配)(及其任何子域的子域,等等))

…它似乎应该允许纯
https://example.com
。然而,我发现了几个不同的网站(,)都说
https://example.com
不包括在内。这是哪一个?

根据,如果要包括基本域,您应该在CSP标题中包括
'self'
以及
*.example.com

从(旧的)CSP规范中引用的文本是错误的(现在已修复)。引用的其他来源是正确的

但所引用的定义CSP源代码表达式的部分实际上并没有说明相关的规范性要求

相反,CSP规范中实际规范性定义相关要求的部分是算法,在子步骤中,其内容如下:

  • 如果表达式主体部分的第一个字符是U+002A星号字符(
    *
    ):

  • 让剩余部分作为从表达式中删除前导“
    *
    ”的结果
  • 如果剩余字符(包括前导U+002E句号字符(
    )不是最右边字符的ASCII不区分大小写匹配
    url
    的主机的字符,然后返回“不匹配”
  • 要求中包含前导U+002E句号字符(
    )的部分表示删除星号后的剩余部分包含前导句号,因此
    url
    主机的最右边字符也必须以点开头,以便与之匹配

    换句话说,如果您从
    *.example.com
    开始,并遍历该部分算法,则首先删除
    *
    ,将
    .example.com
    作为剩余部分,然后将
    url
    主机的最右边字符与之匹配,包括前面的句号

    所以
    https://foo.example.com
    匹配,因为其主机部分最右边的字符匹配
    .example.com
    ,但
    https://example.com
    不匹配,因为它的主机部分最右边的字符不匹配
    .example.com
    (因为它缺少包含的句号)


    2017-10-13更新

    一段时间前,CSP规范和它的

    现在的案文如下:

    主机,如
    example.com
    (匹配主机上的任何资源,无论方案如何)或
    *.example.com
    (匹配主机子域上的任何资源(及其任何子域的子域,等等))


    请注意,读到“匹配主机或其任何子域上的任何资源”的部分现在只读到“匹配主机子域上的任何资源”。

    我应该明确指出,
    example.com
    不是我的网站。因此,如果我正确理解了所有内容,
    self
    将允许
    mydomain.com
    。我更新了我的问题来澄清。啊,好的。在这种情况下,我仍然坚持使用Mozilla的/w3规范,其中*.example.com包括外国网站的域和子域。我可能有点迂腐,但
    example.com
    是一个域,而
    foo.example.com
    bar.example.com
    是主机。