最大允许的内容安全策略是什么?

2023-11-23

我有一个庞大的遗留代码库,我想将其引入Content-Security-Policy标头打开。短期内想要真正锁定站点是不可行的(例如,到处都是内联脚本,没有自动化测试覆盖),但至少我可以从禁止访问我知道的内容源开始目前肯定没有使用,然后随着时间的推移慢慢减少。

不幸的是,未使用的来源列表相当短。这是我第一次尝试Content-Security-Policy value:

default-src * 'unsafe-eval' 'unsafe-inline'

这破坏了很多事情,例如使用数据来源的图像:方案。环顾四周,我看到您可能想要包括的一些内容, 例如connect-src ws:,没有明确指出the docs.

最大允许值是多少Content-Security-Policy标头值基本上可以让网站执行浏览器默认允许执行的所有操作?另一种方式问:我可以引入什么标头值,并且绝对不会破坏网站上的任何内容?

如果我可以从我知道不会破坏任何内容的内容开始,然后减去我知道可以安全删除的权限,那么将标头引入旧站点会更舒服。


tl;dr 使用“仅报告”模式向旧站点引入策略。

请参阅 w3.org/TR/CSP2/#source-list-guid-matching。

如上所述,引用特定片段的特殊 URL 方案 独特的内容,例如“数据:”,“blob:”和“文件系统:” 排除在匹配 * 策略之外,并且必须明确列出。

因此,类似的事情default-src * 'unsafe-eval' 'unsafe-inline' 'unsafe-dynamic' data: filesystem: about: blob: ws: wss:可能已经接近最宽松的政策了。当然,还有更多协议可能需要列入白名单。


HOWEVER

通常人们会采取相反的方法。他们将部署标头Content-Security-Policy-Report-Only: default-src 'none'这不会影响您网站的加载,并且允许您根据违规或控制台警告逐步降低您的政策。

我强烈建议您从caspr 镀铬扩展创建初始策略,然后使用 report-uri.io 查看报告违规行为。当您的策略看起来稳定并且违规行为最少时,请将您的策略​​切换到强制模式。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

最大允许的内容安全策略是什么? 的相关文章

随机推荐

  • 如何使用 git init 将本地 git hook 替换为更新版本?

    我和这位用户有完全相同的问题 git init 模板 替换修改后的钩子 我的全局 git hooks 中有一个新的模板文件 但是 原来的模板文件已经加载了 所以git init不会覆盖 我在这里读到了同样的内容 这似乎是正确的 git 行为
  • 使用moment.js,如何向用户显示当前的日期格式?

    给定一个文本字段 我想要一个合适的占位符 典型的占位符类似于 mm dd yyyy 但是 我想通过 moment js 使用区域设置感知日期 这意味着我将指定 l 作为 moment js 日期格式 如何确定在这种情况下 moment js
  • 如何使用 pandas 更改数据框中文本的字体大小

    我研究了 pandas 的样式文档 但无法准确地得到我的问题的特定和准确的答案 我正在使用数据帧读取 Excel 文件并在程序中处理该数据帧 最后 我使用 xlwings 库在另一个现有的 Excel 文件中写入处理后的数据帧 我在用 im
  • 如何使编辑器句柄可选择以显示属性检查器窗口

    这是来自的后续问题如何使贝塞尔曲线的各个锚点连续或不连续 请参阅它以获取已接受答案中的相关代码 请注意 我这样做是为了保持这个问题的简洁 因为相关代码相当冗长 我正在努力实现以下目标 使贝塞尔曲线手柄 控制点可选择 以便在选择时单个手柄的属
  • 根据谓词将列表拆分为列表列表

    我知道这个问题 但它与序列有关 这不是我的问题 给定此输入 例如 let testlist text1 text2 text3 text4 text5 text6 text7 let pred s string s StartsWith 我
  • 如何在 Swift 中将类分配给启动屏幕?

    我正在尝试更改从我的闪屏类调用 Web 服务的类 但它会触发错误消息 错误是 启动画面不允许自定义类 您的启动故事板在您的应用程序开始执行之前显示 因此 正如错误所示 它无法执行代码 您可以复制启动故事板中的场景作为主故事板的初始视图控制器
  • 在php中解析法国日期

    我有字符串 伦迪 2013 年 7 月 8 日 09 09 如何解析这个类型的字符串 I try date 08 Juillet 2013 09 09 date new DateTime date 但它抛出异常 The intl扩展可以用于
  • 您能否限制可以在 MATLAB GUI 编辑框中输入哪些字符?

    我想在 MATLAB GUI 中创建一个编辑框 仅允许在其中输入数字或字母 这可能吗 不存在这样的功能 至少没有记录在案 您可以分配一个回调来检查输入 但这将会发生after用户输入了非法字符 虽然我不知道具体该怎么做 但我猜你可以使用 J
  • ActionListener 如何工作?

    我知道如何使用动作侦听器并实现它们 但我想知道是否有人可以告诉我他们如何侦听事件 有某种轮询机制吗 操作侦听器使用以下方法注册事件观察者模式主事件循环会通知他们所注册的任何事件 所以不 这不是一个轮询 拉 机制 而是相反的 一个 推 回调
  • 拖动 WPF 用户控件

    我创建了一个可移动的UserControl
  • MySQL:在多列中查找相同的字符串

    我正在尝试制作一个类似搜索页面的功能 我想进行查询以在 ColumnA 和 ColumnB 以及 ColumnC 和 ColumnD 中查找 query 并选择在任何这些列中具有单词 短语 query 的行 这似乎有效 SELECT FRO
  • 从客户端的对象数组中获取最新日期的优雅方法是什么?

    我在项目中使用AngularJS 我从服务器获取对象数组 每个对象都包含几个属性 其中之一是日期属性 这是我从服务器获取的数组 json 格式 Address 25 AlertType 1 Area North MeasureDate 20
  • UIScrollView 按偏移量滚动

    我有这样的情况 适合所有屏幕的一个滚动视图 scrollView内部有N个 单元格 每个单元格包含一个标签 每个单元格的高度为 80px 固定绿色遮罩 UIView 我以编程方式创建带有标签的单元格 UIView 并正确设置scrollVi
  • MySQL命令解释忽略LIMIT?

    我使用MySQL服务器版本5 5 14 现在我正在尝试使用Explain命令进行这个简单的SQL查询 EXPLAIN SELECT id name thumb FROM twitter profiles LIMIT 10 它向我显示了这个结
  • Ninject.MVC3 Bootstrapper 的 Kernel 属性被标记为“已过时”。我怎样才能访问内核?

    我将 Ninject MVC3 包从 2 2 1 0 更新到 2 2 2 0 之前我可以通过 BootStrapper Kernel 属性访问 Kernel 对象 但在新版本中 Kernel 属性被标记为过时 我收到警告说 公共只读属性内核
  • 比较 pandas 列中的浮点数

    我有以下数据框 actual credit min required credit 0 0 3 0 4 1 0 5 0 2 2 0 4 0 4 3 0 2 0 3 我需要添加一列 指示actual credit gt min require
  • JavaScript 预加载是如何工作的?

    我不想知道预加载图像的方法 我在网上找到了很多 但我想知道它是如何工作的 javascript 如何预加载图像 我的意思是 我尝试了这里的一个片段 即使它有效 它似乎也没有预加载图像 当我检查 firebug 时 我可以看到图像加载了两次
  • 解密使用 RSA java 加密的“长”消息

    您好 这是两年前问过的同一个问题 Java JCE 解密使用 RSA 加密的 长 消息 我有一个大字节数组和 rsa 密钥对 由值 1024 启动 使用 rsa 加密和指定密钥大小是强烈要求 我无法更改它 所以我不能使用对称加密和非对称加密
  • 通过 PHP 从网站提取数据

    我正在尝试为一些朋友创建一个简单的警报应用程序 基本上我希望能够从如下两个网页中提取数据 价格 和 库存可用性 http www sparkfun com commerce product info php products id 5 ht
  • 最大允许的内容安全策略是什么?

    我有一个庞大的遗留代码库 我想将其引入Content Security Policy标头打开 短期内想要真正锁定站点是不可行的 例如 到处都是内联脚本 没有自动化测试覆盖 但至少我可以从禁止访问我知道的内容源开始目前肯定没有使用 然后随着时