编辑页面

内容安全策略

内容安全策略 (CSP) 是一个 W3C 规范,用于指示客户端浏览器允许加载哪些位置和/或哪些类型的资源。此规范使用“指令”来定义目标资源类型的加载行为。指令可以使用 HTTP 响应头或 HTML <meta> 标签指定。

启用 CSP

#
使用 lusca
#

lusca 是在 Apache 许可证 下开源的

首先

# In your sails app
npm install lusca --save --save-exact

然后在 config/http.js 中添加 csp

// ...

  csp: require('lusca').csp({
    policy: {
      'default-src': '*'
    }
  }),

  // ...

  order: [
    // ...
    'csp',
    // ...
  ]

支持的指令
#

为了让您了解它是如何工作的,以下是截至 2017 年支持的 CSP 指令的快照

指令
default-src 如果未定义资源类型专用指令,则所有资源类型的加载策略(回退)
script-src 定义受保护的资源可以执行哪些脚本
object-src 定义受保护的资源可以从哪里加载插件
style-src 定义用户应用于受保护资源的样式 (CSS)
img-src 定义受保护的资源可以从哪里加载图像
media-src 定义受保护的资源可以从哪里加载视频和音频
frame-src 定义受保护的资源可以从哪里嵌入框架
font-src 定义受保护的资源可以从哪里加载字体
connect-src 定义受保护的资源可以使用脚本接口加载哪些 URI
form-action 定义哪些 URI 可以用作 HTML 表单元素的操作
sandbox 指定用户代理应用于受保护资源的 HTML 沙盒策略
script-nonce 通过要求脚本元素上存在指定的 nonce 来定义脚本执行
plugin-types 定义受保护的资源可以通过限制可以嵌入的资源类型来调用的插件集
reflected-xss 指示用户代理激活或停用用于过滤或阻止反射型跨站点脚本攻击的任何启发式方法,相当于非标准 X-XSS-Protection 标头的效果
report-uri 指定用户代理将有关策略违规的报告发送到的 URI

有关更多信息,请参阅 W3C CSP 规范

浏览器兼容性
#

不同的浏览器支持不同的 CSP 响应头。例如,Content-Security-Policy 是 W3C 标准,但 Chrome、Firefox 和 IE 的各个版本使用 X-Content-Security-PolicyX-WebKit-CSP。有关浏览器支持的最新信息,请参阅 OWasp

其他资源

#

缺少什么吗?

如果您发现我们遗漏了什么或可以改进的地方,请遵循 此链接 并向 Sails 存储库提交拉取请求。合并后,更改将在网站下次部署时反映在网站上。

概念