djangoはデフォルトでDEBUGが「True」になっています。
これは公開前には必ずFalseにするよう書かれていますが、なぜFalseにしなければいけないのかよくわからないという方も多いのではないでしょうか。
そこで今回は、Djangで作ったサイトを公開する前にDEBUG=Falseにする理由を具体例とともに説明していきます。
DEBUG=Falseにするのは、情報の漏洩を防ぐため
一言でお伝えするなら、DEBUG=Falseにするのは、あなたのDjangoに関するデータが漏れるのを防ぐためです。
では、Trueの状態だとどういったデータが漏れてしまうのでしょうか?
早速ここからみていきましょう。
Djangoは、エラーが発生したときに多くの情報を出してくれる
Djangoは、エラーが発生したときに非常に多くの情報を提供してくれます。
これは、開発段階では非常にありがたいことです。
例えば、リクエストを送ったurlがurlpatternにマッチしない場合は、このようなエラーを出してくれます。
グレーのエラーを見てみましょう。
ここでは、urls.pyファイルの中にあるurlpatternと、実際にリクエストを受けたurlを照らし合わせたけど、どれにもマッチしなかった。
と言ってます。
そして、実際にurlpatternsに書いてあるurlの種類が書かれています。
具体的にはこのようなコードです。
- admin/
- radio/[name='radio']
- topsecret/[name='secret']
ここで注目したいのは、3番目です。これは秘密のurlで、このurlを知っている人にしかアクセスできないようなページにしようとしていたのですが、DEBUG=Trueにすることで、その情報が見えてしまっています。
そうすると、ユーザーはドメイン名/topsecret/というurlにアクセスすることで、秘密のページの中身を見ることができるようになってしまうのです。
これは一つの例ですが、こういったリスクがあるので、公開前にはDEBUG=Falseにする必要があるのです。
更に詳細な情報が出てしまう場合もあります。
djangoでhttpresponseの設定が間違っている場合をみてみましょう。
この場合、このようなエラー画面が表示されます。
これは実際に表示されるエラーの一部です。具体的には、setings.pyの内容や、セッションの情報、クッキーの情報などが書かれており、そういったデータが第三者によって簡単に確認できてしまいます。
このように、DEBUG=Trueにすると、エラーが発生したときに多くの情報が第三者によって確認できてしまいます。
逆の考えをすると、DEBUGモードであればどういった情報が見れるのか確認できると考えると、開発を進めるうえで非常に役に立つといえるでしょう。