HTTPS、HSTS、XSS、SSRF

クロスサイトスクリプティング (XSS)

多くの似たようなシステムと異なり、OpenStack dashboard は多くの項目にすべての Unicode 文字を許可します。このことは、開発者が XSS 攻撃の余地を残すエスケープミスをする範囲が少なくなることを意味します。

ダッシュボードは開発者が XSS 脆弱性を作ることを防ぐためのツールを提供します。しかし、それらは開発者が適切に使用するときのみ機能します。mark_safe 関数の使用、カスタムテンプレートタグを持つ is_safe の使用、safe テンプレートタグ、自動エスケープが無効化されているすべての場所、不適切にエスケープされたデータを評価するすべての JavaScript にとくに注意して、すべてのカスタムダッシュボードを監視します。

クロスサイトリクエストフォージェリ (CSRF)

Django は、クロスサイトリクエストフォージェリー (CSRF) 向けの専用ミドルウェアがあります。詳細は Django ドキュメント.

The OpenStack dashboard is designed to discourage developers from introducing cross-site scripting vulnerabilities with custom dashboards as threads can be introduced. Dashboards that utilize multiple instances of JavaScript should be audited for vulnerabilities such as inappropriate use of the @csrf_exempt decorator. Any dashboard that does not follow these recommended security settings should be carefully evaluated before restrictions are relaxed.

Cross-Frame Scripting (XFS)

Legacy browsers are still vulnerable to a Cross-Frame Scripting (XFS) vulnerability, so the OpenStack dashboard provides an option DISALLOW_IFRAME_EMBED that allows extra security hardening where iframes are not used in deployment.

HTTPS

Deploy the dashboard behind a secure HTTPS server by using a valid, trusted certificate from a recognized certificate authority (CA). Private organization-issued certificates are only appropriate when the root of trust is pre-installed in all user browsers.

ダッシュボードのドメインに対する HTTP リクエストは、完全修飾された HTTPS URL にリダイレクトされるよう設定します。

HTTP Strict Transport Security (HSTS)

HTTP Strict Transport Security (HSTS) の使用が強く推奨されます。

注釈

Web ブラウザーの前面で HTTPS プロキシーを使用している場合、HTTPS 機能を持つ HTTP サーバーを使用するより、SECURE_PROXY_SSL_HEADER 変数を変更したほうがいいです。SECURE_PROXY_SSL_HEADER の変更に関する詳細は、Django documentation を参照してください。

HSTS の設定を含め、HTTPS の設定に関するより具体的な推奨事項とサーバー設定は、セキュア通信 の章を参照してください。