Security 我可以使用CSP将请求限制为https:和';自我';?
我最初在我的CSP头中有这样的内容: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',但添加该方案
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得到所有的绿色记号。(我现在已经这么做了,我只需要修改一些拼写错误)