web-dev-qa-db-ja.com

flaskサーバーを開発環境で実行しても安全ですか?

APコンピュータサイエンスのクラスのZoomコールで提出しなければならないプロジェクトがあります。 flask私のラップトップからポートフォワードに実行しているサイトがあります。サーバーを実行すると次のようになります。

WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off

私はこれを数時間だけ実行する予定であり、特に効率的である必要はありませんが、コンピュータを攻撃のために開けたくありません。 (このようにデバッグモードで実行するのは非常に危険です)。 Webアプリには、盗むべき機密データはありませんが、リモートコード実行などのためにマシンを開かないようにしたかったのです。

2
Skyler

私の理解は、Flaskは、セキュリティではなく安定性のため、本番環境ではお勧めしません。WSGIまたはGunicornを使用すると、マルチスレッド/マルチプロシージャをより効果的に利用し、複数のリクエストを同時に処理できます。

初心者の場合、Flask=からWSGIに移動するのは難しいかもしれません(Gunicornは少し簡単ですが、まだ学習曲線があります)。これが何かをデモするために数時間だけの場合あなたのクラスに-次の警告を付けて、Flaskを公開するために行くと思います。

  1. インターネットに公開するポートが十分にランダムであることを確認し(80や8080は使用しないでください)、48982や13892などを試してください。これにより、攻撃の可能性が大幅に減少します。
  2. flaskをrootユーザーとして実行しないでください。公開したいファイルにのみアクセスできるスコープダウンユーザーを作成してください。

お役に立てば幸いです。

3
keithRozario

開発サーバーはデモに完全に適していますが、次の点に注意してください。

  • デフォルトで実行します。デフォルトでは、サーバーはlocalhost(127.0.0.1)でのみ使用できます。明示する必要がありますflask run --Host=0.0.0.0ネットワークで使用できるようにします。内部ネットワークを介してデモを行う場合は、これで問題ありません。だが...
  • 開発サーバーをパブリックインターネット経由でアクセス可能にしないでください。開発サーバーは、便宜上Werkzeugによって提供されていますが、特に効率的、安定、または安全であるように設計されていません。

他の人があなたのアプリケーションにアクセスしたいように聞こえます(そうでなければ、あなたは正しく移植しないでしょうか?)。それが内部ネットワーク内にある場合、それのために行きます。それ以外の場合はしないでください。

デバッグがオンになっているときのWerkzeugサーバーの this 脆弱性に関連している可能性があるというリモートコード実行の心配が見えます。アプリケーションを共有する場合は、デバッグを無効にするのが賢明だと思います。

FlaskにはCSRF保護などの組み込みのセキュリティ保護が付属していますが、自分で対処する必要があるほとんどのセキュリティ選択( セキュリティに関する考慮事項 )入力検証、シークレット管理、セッション管理、セキュリティヘッダー、HTTPSはアプリケーションをより幅広いWebに公開する前に真剣に検討する必要のある事項。それ以外の場合は、XSS、SQLインジェクションなどの攻撃を招くでしょう。

1
Kyle Fennell