Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/security/4.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.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
Security 我可以使用CSP将请求限制为https:和';自我';?_Security_Http_Https_Http Headers_Content Security Policy - Fatal编程技术网

Security 我可以使用CSP将请求限制为https:和';自我';?

Security 我可以使用CSP将请求限制为https:和';自我';?,security,http,https,http-headers,content-security-policy,Security,Http,Https,Http Headers,Content Security Policy,我最初在我的CSP头中有这样的内容:defaultsrc'self',它将源代码仅限于我的域,但它没有说明方案/协议。据我所知,如果页面本身是通过http加载的,这将允许通过http加载源。我正在使用HST和CDN重定向来尝试保持https上的所有流量,但我还是想掩盖这个问题。(事实上,我正试图让你给我所有的绿色记号。)编辑:当使用'self'时,srcclr会很乐意给所有的绿色记号。我只是需要修正一些拼写错误 无论如何,我尝试将CSP指令更改为默认src https:'self',但添加该方案

我最初在我的CSP头中有这样的内容:
defaultsrc'self',它将源代码仅限于我的域,但它没有说明方案/协议。据我所知,如果页面本身是通过http加载的,这将允许通过http加载源。我正在使用HST和CDN重定向来尝试保持https上的所有流量,但我还是想掩盖这个问题。(事实上,我正试图让你给我所有的绿色记号。)编辑:当使用
'self'
时,srcclr会很乐意给所有的绿色记号。我只是需要修正一些拼写错误

无论如何,我尝试将CSP指令更改为
默认src https:'self',但添加该方案似乎允许从任何域加载资源,只要它是通过https加载的。也就是说,如果其中一个规则(https或“self”)匹配,则允许该请求。我通过在chrome开发工具中使用URL来测试这一点

有没有办法表明:

  • 所有资源都应该通过https加载;及
  • 资源应该只来自原始域
  • 类似于
    默认src https://“self”的东西,但我认为这是无效的,是吗

    一种解决方案是对域名进行硬编码,但如果可能的话,我想使用
    'self'

    根据
    'self'
    内容源关键字:

    指提供受保护文档的来源,包括相同的URL方案和端口号

    如果您通过https提供网页服务,那么self-only允许对同一域的https请求

    CSP2规范说明了同样的事情:

    如果源表达式与“self”(包括引号)不区分大小写,则:

    如果url的源与受保护资源的url的源匹配,则返回不匹配


    是的,所以我想不可能说“来自
    'self'
    的域,但是这个特定的方案”。如果页面是在http上提供的,那么根据定义,“self”是指http。因此,将其同时固定到https和我自己的域的唯一方法是使用
    https://example.com
    @CamJackson我不明白。你说有CSP的页面使用http?但你说你的域名使用HST。(请注意,http的301重定向->https不需要CSP。)如果您真的使用HSTS,您应该为所有http请求回答301到https,因为新浏览器将自动执行此操作。不,我是说,如果页面通过http提供服务,那么
    'self'
    也将引用http,因此始终限制为https的唯一方法,虽然也仅限于我的领域,但是硬编码
    https://example.com
    ,而不是使用
    “self”
    。我想这就是它的工作原理?但是,是的,我使用重定向和HST限制页面加载到https,所以使用
    'self'
    是更简单更好的解决方案。我主要是想从srcclr得到所有的绿色记号。(我现在已经这么做了,我只需要修改一些拼写错误)