• Debug=TrueとFalseの違いを解説【公開前にFalseにする理由】

    djangoはデフォルトでDEBUGが「True」になっています。

    これは公開前には必ずFalseにするよう書かれていますが、なぜFalseにしなければいけないのかよくわからないという方も多いのではないでしょうか。

    そこで今回は、Djangで作ったサイトを公開する前にDEBUG=Falseにする理由を具体例とともに説明していきます。

    DEBUG=Falseにするのは、情報の漏洩を防ぐため

    一言でお伝えするなら、DEBUG=Falseにするのは、あなたのDjangoに関するデータが漏れるのを防ぐためです。

    では、Trueの状態だとどういったデータが漏れてしまうのでしょうか?

    早速ここからみていきましょう。

    Djangoは、エラーが発生したときに多くの情報を出してくれる

    Djangoは、エラーが発生したときに非常に多くの情報を提供してくれます。

    これは、開発段階では非常にありがたいことです。

    例えば、リクエストを送ったurlがurlpatternにマッチしない場合は、このようなエラーを出してくれます。

    404エラーの画面

    グレーのエラーを見てみましょう。

    ここでは、urls.pyファイルの中にあるurlpatternと、実際にリクエストを受けたurlを照らし合わせたけど、どれにもマッチしなかった。

    と言ってます。

    そして、実際にurlpatternsに書いてあるurlの種類が書かれています。

    具体的にはこのようなコードです。

    1. admin/
    2. radio/[name='radio']
    3. topsecret/[name='secret']

    ここで注目したいのは、3番目です。これは秘密のurlで、このurlを知っている人にしかアクセスできないようなページにしようとしていたのですが、DEBUG=Trueにすることで、その情報が見えてしまっています。

    そうすると、ユーザーはドメイン名/topsecret/というurlにアクセスすることで、秘密のページの中身を見ることができるようになってしまうのです。

    これは一つの例ですが、こういったリスクがあるので、公開前にはDEBUG=Falseにする必要があるのです。

    更に詳細な情報が出てしまう場合もあります。

    djangoでhttpresponseの設定が間違っている場合をみてみましょう。

    この場合、このようなエラー画面が表示されます。

    responseがなかった場合のエラー画面

    これは実際に表示されるエラーの一部です。具体的には、setings.pyの内容や、セッションの情報、クッキーの情報などが書かれており、そういったデータが第三者によって簡単に確認できてしまいます。

    このように、DEBUG=Trueにすると、エラーが発生したときに多くの情報が第三者によって確認できてしまいます。

    逆の考えをすると、DEBUGモードであればどういった情報が見れるのか確認できると考えると、開発を進めるうえで非常に役に立つといえるでしょう。

    ~Django無料講義~のご案内

    Code for Djangoが、4時間超の無料Django講義をはじめました

    •  ・本を出版したCode for Djangoの
       製作者が作ったサイトです。
    •  ・Code for Djangoの内容も、
       動画で詳しく解説しています。
    •  ・動画は順次ふやしていきますので、
       ただで学び続けることが可能です。
    •  ・Djangoの効率的なスキルアップに、
       是非お役立て下さい。