django python manage.py check –deploy エラー

?: (security.W004) You have not set a value for the SECURE_HSTS_SECONDS setting. If your entire site is served only over SSL, you may want to consider setting a value and enabling HTTP Strict Transport Security. Be sure to read the documentation first; enabling HSTS carelessly can cause serious, irreversible problems.

—-> http://tokibito.hatenablog.com/entry/20150624/1435073520

HTTPS強制でなければつけなくて良いが、最近はつけた方が良い。

31536000秒(=365日で良いか

settings.SECURE_HSTS_SECONDSに秒数を設定すると、リクエストがHTTPSの場合に「strict-transport-security」ヘッダがレスポンスに付与されます。この際、max-ageはSECURE_HSTS_SECONDSの値になります。

max-age
そのサイトに HTTPS だけで接続することをブラウザが記憶する時間です。この時間は秒単位で指定します。


?: (security.W006) Your SECURE_CONTENT_TYPE_NOSNIFF setting is not set to True, so your pages will not be served with an 'x-content-type-options: nosniff' header. You should consider enabling this header to prevent the browser from identifying content types incorrectly.

—->

必ず True。

settings.SECURE_CONTENT_TYPE_NOSNIFFにTrueを設定すると、「x-content-type-options: nosniff」ヘッダがレスポンスに付与されます。

http://d.hatena.ne.jp/hasegawayosuke/20130517/p1

JSON内に第三者に漏れては困る機密情報が含まれる場合は、必ず X-Content-Type-Options: nosniff レスポンスヘッダをつけるようにしましょう(むしろ機密情報かどうかに関わらず、全てのコンテンツにつけるほうがよい。

http://d.hatena.ne.jp/hasegawayosuke/20110106/p1

IEがコンテンツを sniff してHTML以外のものをHTML扱いしてしまうことを防ぐために、動的にコンテンツを生成している場合には、とにかくあらゆるコンテンツのレスポンスヘッダに X-Content-Type-Options: nosniff を付与するようにしましょう。少なくとも、IE8以降ではHTML以外のものがHTML扱いされてXSSが発生する、ということはなくなります

 

?: (security.W005) You have not set the SECURE_HSTS_INCLUDE_SUBDOMAINS setting to True. Without this, your site is potentially vulnerable to attack via an insecure connection to a subdomain. Only set this to True if you are certain that all subdomains of your domain should be served exclusively via SSL.

—->

サブドメインに対しても HSTS を有効にします。HTTPSなら True.

If True, the SecurityMiddleware adds the includeSubDomains tag to the HTTP Strict Transport Securityheader. It has no effect unless SECURE_HSTS_SECONDS is set to a non-zero value.

HTTP Strict Transport Security 機能により、Web サイトはブラウザに対して、そのサイトでは HTTP を使用せず、代わりに HTTPS へ置き換えてアクセスすることを試みるように伝達することが可能になります。


?: (security.W007) Your SECURE_BROWSER_XSS_FILTER setting is not set to True, so your pages will not be served with an 'x-xss-protection: 1; mode=block' header. You should consider enabling this header to activate the browser's XSS filtering and help prevent XSS attacks.

—>

こちらも True.

settings.SECURE_BROWSER_XSS_FILTERにTrueを設定すると、「x-xss-protection: 1; mode=block」ヘッダがレスポンスに付与されます。

最近のWebブラウザには、クロスサイトスクリプティング(XSS)に対するフィルタ機能が装備されています。「X-XSS-Protection」はこのフィルタ機能を強制的に有効にするというものです。


?: (security.W008) Your SECURE_SSL_REDIRECT setting is not set to True. Unless your site should be available over both SSL and non-SSL connections, you may want to either set this setting True or configure a load balancer or reverse-proxy server to redirect all connections to HTTPS.

—->

HTTPS が有効ならば。

settings.SECURE_SSL_REDIRECTにTrueを設定すると、HTTPでDjangoアプリケーションにアクセスした際に、httpsで始まるURLにリダイレクトするようにレスポンスを返します。
この際、ホスト名を変更したい場合はsettings.SECURE_SSL_HOSTにホスト名を指定できます。
また、特定のパスにアクセスした場合にリダイレクトさせたくない場合は、settings.SECURE_REDIRECT_EXEMPTに正規表現で除外するパターンを指定できます。


?: (security.W012) SESSION_COOKIE_SECURE is not set to True. Using a secure-only session cookie makes it more difficult for network traffic sniffers to hijack user sessions.

—->

CSRF のエラーが出る場合があるとのこと。

デフォルト値: False

セッションクッキーにセキュアなクッキーを使うかどうかを決めます。この値を True に設定すると、クッキーは "セキュア" にマークされます。クッキーがセ キュアにマークされると、ブラウザによっては HTTPS 接続でのみクッキーを転送す るようになります。


?: (security.W016) You have 'django.middleware.csrf.CsrfViewMiddleware' in your MIDDLEWARE_CLASSES, but you have not set CSRF_COOKIE_SECURE to True. Using a secure-only CSRF cookie makes it more difficult for network traffic sniffers to steal the CSRF token.

—>

HTTPS なら True.

CSRF クッキーにセキュアクッキー (secure cookie) を使用するかどうかを設定します。 True を設定すると、クッキーは “secure” に設定されます。これは、ブラウザが HTTPS 接続でのみ、このクッキーを送信することを保証するであろうことを意味します。


?: (security.W017) You have 'django.middleware.csrf.CsrfViewMiddleware' in your MIDDLEWARE_CLASSES, but you have not set CSRF_COOKIE_HTTPONLY to True. Using an HttpOnly CSRF cookie makes it more difficult for cross-site scripting attacks to steal the CSRF token.

—>

これは True にするか

Default: False

Whether to use HttpOnly flag on the CSRF cookie. If this is set to True, client-side JavaScript will not to be able to access the CSRF cookie.

This can help prevent malicious JavaScript from bypassing CSRF protection. If you enable this and need to send the value of the CSRF token with Ajax requests, your JavaScript will need to pull the value from a hidden CSRF token form input on the page instead of from the cookie.


?: (security.W018) You should not have DEBUG set to True in deployment.

—->

Productionなら False

 


?: (security.W019) You have 'django.middleware.clickjacking.XFrameOptionsMiddleware' in your MIDDLEWARE_CLASSES, but X_FRAME_OPTIONS is not set to 'DENY'. The default is 'SAMEORIGIN', but unless there is a good reason for your site to serve other parts of itself in a frame, you should change it to 'DENY'.

—->

これは "DENY"

X-Frame-Options には、3 種類の値を設定できます:

DENY
サイト側の意図に関わらず、ページをフレーム内に表示することはできません。
SAMEORIGIN
自身と生成元が同じフレーム内に限り、ページを表示することができます。
ALLOW-FROM uri
指定された生成元に限り、ページをフレーム内に表示できます。

 


?: (security.W020) ALLOWED_HOSTS must not be empty in deployment.

—->

ALLOWED_HOSTには公開するサイトのドメイン名を記入すれば良いので, www.example.comというサイトを公開する際にはsettings.py内に以下のように記入すればOKです.

ALLOWED_HOSTS = ["www.example.com"]

ALLOWED_HOSTは後述するセキュリティ上の理由により, FQDNで指定するのが望ましいですが, 以下のようにワイルドカードを用いることも出来ます.

ALLOWED_HOSTS = ["*.example.com"]
ALLOWED_HOSTS = ["*"]

Leave a Reply

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です