【Django】settings.py:Debug=Trueは本番環境公開前にFalseにすべき理由
2020.08.10 /
この記事は、DjangoでWebアプリケーションを作成している方を対象としており、settings.py中に記載があるDebug設定について解説していきます。
Djangoをインストールした段階では、Debug=Trueとなっております。
この設定について説明しているチュートリアルは少ないため、この設定を気にせずに開発を進めている人も多いと思います。
しかし、開発段階では問題ありませんが、作成したWebアプリケーションを本番環境にデプロイするときには、このDebugの設定を変更する必要があります。
なぜ変更しなければならないのか?どんな影響が考えられるか?
それらについて以下で詳しく解説していきます。
Debug=Trueでの動作
settings.py内のDebug(デバッグモード)がTrueの場合は、どういった動作を行うのか。
みなさんWebアプリケーションを開発中に以下のような画面表示を1度は見たことがあるはずです。
この表示が出るということは、デバッグモードが有効になっているということです。
すなわちDebug=Trueの場合、エラー発生時にブラウザにエラー詳細表示をしてくれます。
Debug=Falseでの動作
Debug=Falseにすると、Trueのときのようにエラー詳細は表示されません。
そのためなにが悪いのかがわからないため、開発中はTrueであるべきなのはわかりますね。
ではなぜ、本番環境ではFalseにするべきなのでしょうか。
本番環境でDebug=Falseに変更する理由
もう薄々気づいている方も多いかと思いますが、DebugをFalseに変更する理由として、
エラー詳細情報からあなたのWebアプリケーションの情報が漏れることを防ぐためです。
APIやSIGNATURE、TOKENなど絶対に秘密にすべき情報は表示されないのですが、他の有益な情報を攻撃者に与えてしまう可能性があるので、基本的には本番環境ではDebug=Falseにする必要があるのです。
Debugを変更した際の注意点
Debug=TrueからFalseに変更すると、実はエラー詳細情報が表示されなくなるだけではないです。
Debug=Trueかつsettings.py内のALLOWED_HOSTSが空の場合、ALLOWED_HOSTS=['localhost', '127.0.0.1', '[::1]']が自動的に有効となります。
Debug=Falseにした場合、有効になっていたALLOWED_HOSTS=['localhost', '127.0.0.1', '[::1]']が無効になるため、ALLOWED_HOSTSが空のままだとWEBアプリケーションに接続できなくなります。
そのためDebug=Falseに変更したら、必ずALLOWED_HOSTSにサーバーのアドレスを指定する必要があります。
まとめ
今回のポイントを以下にまとめます。
Debug=Trueでブラウザにエラー詳細が表示される
本番環境ではDebug=Falseにすべし!
Falseに変更したら、ALLOWED_HOSTSの指定を忘れずに!
上記のポイントを忘れずに、DjangoでのWebアプリケーション開発を進めていってください。