June 14, 2018

DjangoでContent Secirity Policy (CSP)導入する

Djangoアプリでのクロスサイトスクリプティング(XSS)の対策としては、コンテンツセキュリティポリシー(CSP)を設定、導入するのが一番効果的だ。 加えて、クリックジャッキングといった他のサイバー攻撃に対しても検知することもできる。

つまり、CSP導入によって、企業のWebアプリケーションへのセキュリティ対策体制を向上し、データ漏洩、マルウェアへの感染といった外部の攻撃から企業とユーザーを保護できる。

これはGoogle Analyticsの使用を許可するPolicyの例、 画像、JAX、CSSのみを自ドメインから読み込めるような設定になっている

Content-Security-Policy: default-src 'none'; script-src 'self' www.google-analytics.com; connect-src 'self'; img-src 'self' www.google-analytics.com; style-src 'self';

他の例やコンフィグレーションの詳細は こちら

CSP導入でDjango Appを簡単に守るには

Mozilla foundationによって提供されていて、信頼性がある “django-csp”を使用してCSPヘッダーをDjangoにインテグレートすると良い。

pipまたは、githubのソースを使って以下のようにインストールできる

pip install django-csp
git clone https://github.com/mozilla/django-csp.git
cd django-csp
python setup.py install

次に、プロジェクト設定モジュールを調整し”django-csp”ミドルウェアを自分のミドルウェアクラスに追加する

MIDDLEWARE_CLASSES = (
    # ...
    'csp.middleware.CSPMiddleware',
    # ...
)

しかしPolicyのコンフィグレーションや保守は課題

CSPの一つの問題は、ホワイトリストもメンテナンスをし続けなければならないことだ。信頼できるソースとしたものはロードされ、その他のリソースはブロック、レポートされる。なので、アプリにサードパーティのものを入れるたびにホワイトリストの更新をし続ける手間がかかる。さらに、また、違反報告(レポート)などをモニターし、保存できるエンドポイント作る必要もある。

ポリシー違反を大規模にモニタリングするのは難しい。なので、そのようなエンドポイントを作るのは簡単ではない。 “Django-csp” 自体は[レポート処理は対応していない]((http://django-csp.readthedocs.io/en/latest/reports.html)ので、独自にアプリケーションに来るレポートをモニターできるようにしなければならない。

TemplarbitはDjangoアプリケーションのコンフィグレーションとCSPの保守を簡単にします

Templarbit (テンプラービット) 社では、中小企業や大企業のWebアプリケーションを悪意のあるサイバー攻撃から保護する、開発者向けのセキュリティプラットフォームを開発しています。 一つの機能としてCSPヘッダーを設定できるXSS対策があります。DjangoのWebアプリケーションにコンテンツセキュリティポリシーを素早く導入し、管理が可能となります。また、コードをプッシュすることなく、コンテンツセキュリティポリシーがリアルタイムでアップデートされ、管理が手軽になります。 このTemplarbitの手軽さは、独自で持つデータと、機械学習モデルを活用することで、人に頼らずに自動的にセキュリティポリシーの更新が可能だからこそ実現されています。 コンテンツセキュリティポリシーの導入を始めたい方は、から14日間フリートライアルにサインアップするか、私達に無料デモをリクエストを下さい。