sails.config.security
应用程序安全设置的配置,包括处理跨域请求(CORS)的方式以及哪些路由需要在请求中包含 CSRF 令牌。有关 Sails 如何处理安全的概述,请参阅 概念 > 安全。
sails.config.security.cors
Sails 的 内置跨域资源共享支持 的配置。CORS 指定了应用程序的 HTTP 请求来自外部域时应如何处理。它主要用于允许第三方站点向应用程序发出 AJAX 请求,这些请求通常会被遵循 同源策略 的浏览器阻止。
这些选项通常在 config/security.js 配置文件中设置。请注意,这些设置(除了 allRoutes
)可以在 config/routes.js 文件 中按路由进行更改。
属性 | 类型 | 默认值 | 详细信息 |
---|---|---|---|
allRoutes | false | 指示其他 CORS 配置设置是否应默认应用于应用程序中的每个路由。 | |
allowOrigins | '*' |
授予跨域浏览器访问权限的默认主机数组(以 http:// 或 https:// 开头)(例如,通过 CORS 进行 AJAX)。或者,如果这是字符串 * ,则将允许来自任何域的 AJAX 请求。警告:如果您的 CORS 设置指定 allRoutes: true 以及 allowOrigins: '*' ,那么您的应用程序将完全可供托管在外部域上的网站访问(除了具有自己的 CORS 设置的路由)。如果 allowCredentials 也是 true ,那么您可能需要将其设置为显式主机数组!如果您不这样做,那么应用程序将无法启动以保证安全性,除非您通过启用 allowAnyOriginWithCredentialsUnsafe: true 标志来绕过该预防措施。 |
|
allowRequestMethods | 'GET, POST, PUT, DELETE, OPTIONS, HEAD' |
逗号分隔的 HTTP 方法列表,这些方法允许在 CORS 请求中使用。这仅用于响应 预检请求,因此包含 GET、POST、OPTIONS 和 HEAD 虽然是惯例,但并非必需的。 | |
allowRequestHeaders | 'content-type' |
逗号分隔的标头列表,这些标头允许与 CORS 请求一起发送。这仅用于响应 预检请求。(例如,如果您希望跨域 AJAX 请求能够将它们的 CSRF 令牌作为请求标头包含进来,您可能会将其更改为 'content-type,x-csrf-token' 。) |
|
allowResponseHeaders | '' |
浏览器允许访问的响应标头列表。请参阅 access-control-expose-headers。 | |
allowCredentials | false | CORS 请求中是否可以共享 Cookie。(例如,如果未启用 allowCredentials ,那么当 Sails 接收来自其他域上网页的 AJAX 请求时,它将无法在后端代码运行时提供 req.session 。) |
|
allowAnyOriginWithCredentialsUnsafe | false | 一项安全预防措施。必须启用此标志才能同时使用 allowOrigins: '*' 和 allowCredentials: true 。这实际上否定了浏览器跨域策略的安全优势,应谨慎使用。 |
以下将允许来自托管在 http://foobar.com
和 https://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 |
false | CSRF 保护默认情况下处于禁用状态,以方便开发。要将其打开,只需将 sails.config.security.csrf 设置为 true ,或者为了获得更大的灵活性,在您 config/routes.js 文件中的任何路由中指定 csrf: true 或 csrf: false 。 |
- 在 Sails v1.0 中,
sails.config.csrf.grantTokenViaAjax
和sails.config.csrf.origin
已被 内置的security/grant-csrf-token
操作取代。