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 | '*' |
授與跨網域瀏覽器存取權(例如透過 CORS 的 AJAX)的預設主機陣列(以 http:// 或 https:// 開頭)。或者,如果這是字串 * ,則將允許來自任何網域的 AJAX 請求。警告:如果您的 CORS 設定指定 allRoutes: true 且 allowOrigins: '*' ,則您的應用程式將完全可被託管在外部網域的網站存取(除了具有自己 CORS 設定的路由)。如果 allowCredentials 也為 true ,您可能需要將其設定為明確主機的陣列! 如果您不這樣做,則應用程式將因安全性原因而無法啟動,除非您透過啟用 allowAnyOriginWithCredentialsUnsafe: true 標誌來規避該預防措施。 |
|
allowRequestMethods | 'GET, POST, PUT, DELETE, OPTIONS, HEAD' |
允許在 CORS 請求中使用的 HTTP 方法的逗號分隔清單。這僅用於回應預檢請求,因此包含 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
動作。