允许头盔 CSP 中的链接
Posted
技术标签:
【中文标题】允许头盔 CSP 中的链接【英文标题】:Allowing links in Helmets CSP 【发布时间】:2021-10-29 08:03:55 【问题描述】:我遇到了关于头盔内 CSP 标头的问题,无论我做什么,链接都无法正常工作,总是会返回错误或断开的链接,通常两者兼而有之。我将如何解决它?当前代码:
app.use(
helmet.contentSecurityPolicy(
directives:
...helmet.contentSecurityPolicy.getDefaultDirectives(),
'default-src': ['\'unsafe-inline\'', '\'self\'', '\'https://*\'', '\'http://*\''],
'script-src': ['\'self\'', '\'unsafe-inline\'', '\'unsafe-eval\'', '*'],
'img-src': ['\'self\'', '\'https://*\'', '\'http://*\''],
,
)
);
【问题讨论】:
如果您要允许来自任何地方的所有内容,为什么还要使用 CSP? @乔 |因为无论我做什么,我都必须允许内容链接,所以我围绕 Firefox 进行开发,以确保一切正常,因为知道 Firefox 对允许的内容非常严格。 【参考方案1】:首先,在主要网站的基本内容安全策略标头中,您可能会看到如下内容:<meta http-equiv-‘Content-Security-Policy’ content-‘default-src: *, ‘unsafe-inline’;’>
好吧,在头盔中,有一个不同的故事,
app.use(
helmet.contentSecurityPolicy(
directives:
...helmet.contentSecurityPolicy.getDefaultDirectives(),
'default-src': ['\'unsafe-inline\'', '\'self\''],
'script-src': ['\'self\'', '\'unsafe-inline\'', '\'unsafe-eval\'', '*'],
'img-src': ['\'self\''],
,
)
);
我为那些使用 Express 和 EJS 创建允许 CSP 标头的链接的人找到了一个修复程序,这也将包括 Discord 链接。
———————————————————————————————————————————————————
在上述其他网站的基本内容安全策略标头中,您基本上可以使用相同的方法来允许链接,就像https://*
一样简单,至少在正常的元标记中,但这是头盔和快递,所以我们需要巧妙地处理它。使用我在问题部分中的代码,我们可以将其修复为实际上允许基本链接。
app.use(
helmet.contentSecurityPolicy(
directives:
app.use(
helmet.contentSecurityPolicy(
useDefaults: false,
directives:
'default-src': ['\'unsafe-inline\'', '\'self\'', 'https://*', 'http://*', '\'unsafe-eval\'', '*'],
'script-src': ['\'self\'', '\'unsafe-inline\'', '\'unsafe-eval\'', '*', 'http', 'https'],
'img-src': ['\'self\'', 'http://*', 'https://*', 'https://cdn.discordapp.com'],
,
)
);
所以,稍微解释一下。
———
在“img-src”下,我们最初看到“self”,它允许在代码中使用图像(例如 src 是“../../public/img/img.jpg”),这些图像会显示,但是我们需要添加更多内容,尤其是链接,因此我们开始使用“https://”、“http://”和“https://cdn.discordapp.com/”。对于两个 'http(s)://' 标头,这些是任何具有安全连接或不安全连接的链接,来自任何 常规 域,就我而言,没有来自子域的任何链接发现,所以为了特别允许不和谐,我们使用不和谐的图像链接系统,即cdn.discordapp.com
,它允许图标和服务器图标显示到您的 EJS 代码和网页中。我想差不多就涵盖了,有什么问题请告诉我,我会尽力解答!
【讨论】:
以上是关于允许头盔 CSP 中的链接的主要内容,如果未能解决你的问题,请参考以下文章
Augmented Reality增强现实中的光学透射式头盔显示器的标定初步
Augmented Reality增强现实中的光学透射式头盔显示器的标定初步