

WEBアプリをDjangoで開発しようとしています。そこで気になったのがrunserverのセキュリティです。

開発用とは言えサーバーを立ち上げるので、攻撃されるリスクか0ではないのかなと思いました。(この辺りの知識が薄いためもしかしたらとんちんかんな事を言っているかもしれないです、申し訳ありません。)  
ここで言う攻撃は、そのサーバー経由で開発してるコードが漏洩したり、開発してる端末の情報の漏洩などを指しています。

もし0でない場合、攻撃された事例などはございますでしょうか？(サラッと調べて特に見当たらなかったのですが)  
また、これを行っておけばリスクが下がるなどのアドバイスがありました頂けると幸いです。


CC BY-SA 4.0
2019-07-02T05:49:57.220
56312
2019-07-04T04:24:56.697
2019-07-02T08:15:39.320
2238
34949
question
python django security
Djangoのrunserverの脆弱性について


> 攻撃された事例などはございますでしょうか？

個人の開発環境のサーバーを攻撃されたという話は聞いたことがありません（私は）。

外部に公開していないDjangoサーバー（のポート）には、外部から直接アクセスできません。公開＝外部からのアクセスの許可なので、当たり前ですが。なので、何らかの方法で間接的にアクセスするしかないですが、それが可能な方法があったとしても、攻撃者がそれを見つけることは簡単ではありません。

それほどの労力をかけてまで、攻撃する価値のあるサーバーであれば別ですが、そうでなければそこに労力をかける攻撃者はいないでしょう。さらにアクセスされたとしても、アプリ自体に大きな脆弱性が無ければ、致命的なダメージには至らないはずです。したがって、攻撃される可能性と攻撃によって失うダメージの期待値は極めて低いです。

ただし、「これなら100%安全」と言えることはほとんどありません（Djangoに限らず）。内部犯がいる可能性もありますし、「自宅のパスワード未設定で使えるWifiを不正に利用されて、そこからDjangoにアクセスされて・・・」なんて可能性も0ではないので。いろいろな可能性が考えられます。

また、ローカルで開発する場合と不特定多数の人に公開する場合とでは、求められるセキュリティレベルが全然違います。金融系のアプリであれば、求められるレベルは非常に高くなります。

なので、ローカルでの開発を過度に不安視する必要は無いですが、不特定多数の人に公開するときは注意が必要です。最新のDjangoに脆弱性が見つかることなんかもあり、そんなときは至急でアップグレードが必要です。

> また、これを行っておけばリスクが下がるなどのアドバイスがありました頂けると幸いです。

Djangoのデフォルトではローカルホスト以外からのアクセスは受け付けないはずです。心配でしたら、開発段階ではこの制限を外さないようにすればいいかもしれません。

DjangoベースのWebアプリケーションをセキュアにする方法について、Djangoのドキュメントに書かれています。

<https://docs.djangoproject.com/en/2.2/topics/security/>

ちなみに、以前脆弱性だらけのDjangoアプリケーションというものを開発してGitHubに公開しました。

<https://github.com/k-tamura/easybuggy4django>

もちろん、開発中も脆弱性だらけでしたが、いっさい攻撃は受けていません:-) 。でも、動くものをインターネットに公開したら大変です。


CC BY-SA 4.0
2019-07-02T13:28:24.950
56329
2019-07-04T04:24:56.697
2019-07-04T04:24:56.697
21092
21092
56312
answer