【问题标题】:Kubernetes Ingress headers single quotesKubernetes Ingress 标头单引号
【发布时间】:2022-01-24 18:02:51
【问题描述】:

我遇到了一个非常奇怪的问题,我无法设置 Content-Security-Policy 所需的单引号。我假设我运行的是旧版本的 ingress,只有在我禁用并重新启用它(microk8s)后才会更新。

    nginx.ingress.kubernetes.io/configuration-snippet: |
      add_header Access-Control-Allow-Origin "https://myhost";
      more_set_headers "X-FRAME-OPTIONS: SAMEORIGIN";
      more_set_headers "Content-Security-Policy: default-src 'self' blob:;";

结果:

skipping ingress ...: nginx.ingress.kubernetes.io/configuration-snippet annotation contains invalid word '

我试过使用x2,用\ 转义,用单引号包裹所有内容并转义,没有任何效果。如果有人能告诉我如何在标题中添加单引号,或者我是否可以避免它们并仍然发送 CSP,我将不胜感激。

编辑:为了清楚起见,这个配置曾经在旧版本上工作,现在入口版本是 v1.0.5。语法或其他设置没有问题。

【问题讨论】:

    标签: kubernetes kubernetes-ingress microk8s


    【解决方案1】:

    1.0.5 中已出现与清理注释输入相关的更改。

    您可能需要查看CVE-2021-25742: Ingress-nginx custom snippets。我把对你感兴趣的部分放在粗体

    annotation-value-word-blocklist 默认是 "load_module,lua_package,_by_lua,location,root,proxy_pass,serviceaccount,{,},',"

    来自 mod_security 和其他功能的用户应该知道一些 阻止的值可能会被这些功能使用,并且必须手动 已被 Ingress 管理员解除阻止

    在我看来,您的问题与 mod_security + 以上的阻止列表有关,其中包含 ' 符号。

    更多详情请查看https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#annotation-value-word-blocklist

    为了解决您的问题,您应该

    • 将annotation-value-word-blocklist的值设置为空字符串“”

    • 更改 annotation-value-word-blocklist 的值并从其列表中删除 '

    【讨论】:

    • 谢谢!文档有点混乱,因为它显示默认为“”,但 1.0.5 将默认设置为更长(中断)的字符串。我还查看了此更改,但错误消息不包含“已阻止”之类的内容。查看他们的源代码,确实是检测到被阻止的关键字时显示的错误消息。
    • 不客气
    猜你喜欢
    • 1970-01-01
    • 2023-04-09
    • 2020-03-13
    • 1970-01-01
    • 2021-05-15
    • 2022-12-10
    • 1970-01-01
    • 1970-01-01
    • 2022-08-18
    相关资源
    最近更新 更多