sails.config.security
クロスオリジンリクエスト(CORS)の処理方法や、リクエストにCSRFトークンを含める必要があるルートなど、アプリケーションのセキュリティ設定のための構成です。Sailsのセキュリティ処理の概要については、「概念 > セキュリティ」を参照してください。
sails.config.security.cors
Sailsのクロスオリジンリソース共有(CORS)の組み込みサポートのための設定です。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' |
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
でホストされているサイトから/foo/bar
へのクロスオリジンのAJAX GET、PUT、POSTリクエストが許可されます。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
設定ファイルで設定されます。詳細な使用方法については、「概念 > セキュリティ > クロスサイトリクエストフォージェリ」を参照してください。
この設定は、クロスサイトリクエストフォージェリ(CSRF)攻撃からSailsアプリケーションを保護します。ユーザーのセッション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
アクションに置き換えられました。