セキュリティに関する設定のまとめ
最終更新日: 2023年1月30日
Strict-Transport-Security ヘッダを設定することで HSTS (HTTP Strict Transport Security) が有効になります。これによってブラウザからサイトへの接続試行を HTTPS へ制限します。つまり HSTS では「HTTP による通信」が行われなくなるため、中間者攻撃による盗聴と通信改ざんのリスクが軽減されます。
R9.2.0 より、標準でこの設定が適用されます。httpsが有効な場合、次のヘッダが出力されます。
標準の動作をapplication.propertiesにて変更できます。関連する設定は次のとおりです。
ビルドした wagbyapp アプリケーションを http 接続で運用する場合、さらに server.xml の修正が必要になります。具体的にはConnectorの設定に
ブラウザの Referrer を介し、ページの URL が外部サイトに共有されます。Wagbyの標準は「外部サイトに Referrer を提供しない (same-origin)」 とします。
標準の動作をapplication.propertiesにて変更できます。関連する設定は次のとおりです。
次の値を指定することができます。
すべてのレスポンスに Content-Security-Policy(CSP) を適切なパラメタとともに付与することで、クロスサイトスクリプティング脆弱性のリスクを低減できるようになります。
CSPの値をapplication.propertiesにて変更できます。関連する設定は次のとおりです。
inlineのJavaScriptやevalはWagby内で使われているため、これを外すことはできません。また self は自分のホストからのみ各コンテンツを取得することを意味しますが、この設定があるとポートレットが外部の JavaScript を実行するような動作ができません。出力値を変更する場合、アプリケーションの動作上の制約にならないかどうかを検討の上、変更を行ってください。
Referrerが正しいリンク元かを確認し、正しい場合のみ処理を実行するという制御を有効にします。
具体的にはReferrerの先頭部分が、指定した文字列であるかどうかをチェックします。異なる場合はエラー画面に遷移します。
標準はこの機能は無効です。後述する設定を行うことで有効にすることができます。
正しいリンク元をapplication.propertiesで設定します。例を示します。
この設定が有効のとき、アドレスバーに直接入力した場合や、遷移元のページのReferrer policyによる "referrerを送信しない設定" の場合も、エラーと扱います。
例えば "wagby.checkreferrer.excludepath=/showJuser.do" と指定すると、アカウント(juser)の詳細画面はReferrerチェックが行われないようになります。コンマ区切りで複数のページを指定することができます。
HTTPヘッダ
Strict-Transport-Security9.2.0
Strict-Transport-Security: max-age=31536000 ; includeSubDomains
挙動を変更する
wagby.security.httpStrictTransportSecurity.enable=true
wagby.security.httpStrictTransportSecurity.includeSubDomains=true
wagby.security.httpStrictTransportSecurity.preload=false
wagby.security.httpStrictTransportSecurity.maxAgeInSeconds=31536000
wagby.security.httpStrictTransportSecurity.enable
をfalse
にすると、Strict-Transport-Securityヘッダは出力されません。
アプリケーションを http 接続で運用する
schema="https" secure="true"
の設定を追加してください。サンプルを示します。
<Connector port="8921" protocol="HTTP/1.1"
maxHttpHeaderSize="8192" maxThreads="150"
enableLookups="false" redirectPort="18443" acceptCount="100"
connectionTimeout="20000" disableUploadTimeout="true" useBodyEncodingForURI="true"
server=" "
compression="off" compressionMinSize="256"
maxParameterCount="20000" schema="https" secure="true" />
[browser] -- https --> [Load Balancer] -- http --> [wagbyapp]
詳細情報
Referrer-Policy9.2.0
挙動を変更する
wagby.security.referrerPolicy=SAME_ORIGIN
詳細情報
Content-Security-Policy (CSP)9.2.0
R9.2.0 より、この設定を行えるようになりました。
挙動を変更する
wagby.security.contentSecurityPolicy.enable=false
wagby.security.contentSecurityPolicy.policyDirectives=default-src 'self' 'unsafe-inline' 'unsafe-eval'
wagby.security.contentSecurityPolicy.reportOnly=false
wagby.security.contentSecurityPolicy.enable
をtrue
にすることで、CSPの値をヘッダに含めることができます。このとき、上の設定を用いて、次の情報がヘッダに含まれるようになります。
Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'
詳細情報
Referrerチェック9.2.0
設定方法
wagby.checkreferrer.url=http://localhost:8921/wagby/
wagby.checkreferrer.acceptempty=false
wagby.checkreferrer.excludepath=
wagby.checkreferrer.url
wagby.checkreferrer.url
を指定すると、チェックが有効となります。
ただしログオン画面とREST API(/logonPage.do,/logon.do,/rest/**,/v3/**)はチェックの対象外としています。REST API の CSRF 対策の詳細はこちらのページをお読みください。
wagby.checkreferrer.acceptempty
wagby.checkreferrer.acceptempty
にtrue
を設定すると、referrerが送信されていない場合にはエラーとならないようにすることができます。
wagby.checkreferrer.excludepath
wagby.checkreferrer.excludepath
に、チェック対象外のページを指定することができます。