编辑页面

sails.config.security

应用程序安全设置的配置,包括处理跨域请求(CORS)的方式以及哪些路由需要在请求中包含 CSRF 令牌。有关 Sails 如何处理安全的概述,请参阅 概念 > 安全

sails.config.security.cors

#

Sails 的 内置跨域资源共享支持 的配置。CORS 指定了应用程序的 HTTP 请求来自外部域时应如何处理。它主要用于允许第三方站点向应用程序发出 AJAX 请求,这些请求通常会被遵循 同源策略 的浏览器阻止。

这些选项通常在 config/security.js 配置文件中设置。请注意,这些设置(除了 allRoutes)可以在 config/routes.js 文件 中按路由进行更改。

属性

#
属性 类型 默认值 详细信息
allRoutes Boolean false 指示其他 CORS 配置设置是否应默认应用于应用程序中的每个路由。
allowOrigins ArrayString '*' 授予跨域浏览器访问权限的默认主机数组(以 http:// 或 https:// 开头)(例如,通过 CORS 进行 AJAX)。或者,如果这是字符串 *,则将允许来自任何域的 AJAX 请求。

警告:如果您的 CORS 设置指定 allRoutes: true 以及 allowOrigins: '*',那么您的应用程序将完全可供托管在外部域上的网站访问(除了具有自己的 CORS 设置的路由)。如果 allowCredentials 也是 true,那么您可能需要将其设置为显式主机数组!如果您不这样做,那么应用程序将无法启动以保证安全性,除非您通过启用 allowAnyOriginWithCredentialsUnsafe: true 标志来绕过该预防措施。
allowRequestMethods String 'GET, POST, PUT, DELETE, OPTIONS, HEAD' 逗号分隔的 HTTP 方法列表,这些方法允许在 CORS 请求中使用。这仅用于响应 预检请求,因此包含 GET、POST、OPTIONS 和 HEAD 虽然是惯例,但并非必需的。
allowRequestHeaders String 'content-type' 逗号分隔的标头列表,这些标头允许与 CORS 请求一起发送。这仅用于响应 预检请求(例如,如果您希望跨域 AJAX 请求能够将它们的 CSRF 令牌作为请求标头包含进来,您可能会将其更改为 'content-type,x-csrf-token'。)
allowResponseHeaders String '' 浏览器允许访问的响应标头列表。请参阅 access-control-expose-headers
allowCredentials Boolean false CORS 请求中是否可以共享 Cookie。(例如,如果未启用 allowCredentials,那么当 Sails 接收来自其他域上网页的 AJAX 请求时,它将无法在后端代码运行时提供 req.session。)
allowAnyOriginWithCredentialsUnsafe Boolean false 一项安全预防措施。必须启用此标志才能同时使用 allowOrigins: '*'allowCredentials: true。这实际上否定了浏览器跨域策略的安全优势,应谨慎使用。

自定义路由配置示例

#

以下将允许来自托管在 http://foobar.comhttps://owlhoot.com 上的网站的跨域 AJAX GET、PUT 和 POST 请求访问 /foo/bar。DELETE 请求或来自任何其他域上的网站的请求将被浏览器阻止。

'/foo/bar': {
  action: 'foo/bar',
  cors: {
    allowOrigins: ['http://foobar.com','https://owlhoot.com'],
    allowRequestMethods: 'GET,PUT,POST,OPTIONS,HEAD'
  }
}

sails.config.security.csrf

#

Sails 内置的 CSRF 保护中间件的配置。CSRF 选项通常在 config/security.js 配置文件中设置。有关详细的使用说明,请参阅 概念 > 安全 > 跨站点请求伪造

此设置保护您的 Sails 应用程序免受跨站点请求伪造(或 CSRF)攻击。除了用户的会话 Cookie 之外,潜在的攻击者还需要这个带时间戳的秘密 CSRF 令牌,该令牌在用户访问应用程序域上的 URL 时会刷新/授予。这使您可以确信用户的请求没有被劫持,并且他们发出的请求是故意且合法的。

属性

#
属性 类型 默认值 详细信息
csrf BooleanDictionary false CSRF 保护默认情况下处于禁用状态,以方便开发。要将其打开,只需将 sails.config.security.csrf 设置为 true,或者为了获得更大的灵活性,在您 config/routes.js 文件中的任何路由中指定 csrf: truecsrf: false

备注

#

是否缺少内容?

如果您注意到我们遗漏了某些内容或可以改进,请遵循 此链接 并向 sails 存储库提交拉取请求。在我们将其合并后,更改将在下次部署网站时反映在网站上。

参考

参考