Flaskのdebug=True
オプションがwerkzeugデバッガー機能といくつかの リソースがハッキングされた を介したリモートコード実行につながる可能性があることはよく知られている事実です。調べてみると、uwsgiやgunicornなどのforkアプリケーションサーバーでアプリを実行している場合、この手法は機能しないことがわかりました。だから質問は:
debug=True
が有効なアプリケーションを、フォークしているアプリケーションサーバー(gunicorn、uwsgi)で実行されている場合でも)利用する機会はありますか?このハッキングされたすべてのリソースが信じられません本番環境では組み込みのFlaskのWebサーバーを使用しました。このコードでデバッガを有効にすると:
app = flask.Flask(__name__)
app.debug = True
これは、組み込みのdevサーバーを備えたデバッガーのみを有効にします。 Werkzeugデバッガーを別のWSGIサーバーで使用するには、ミドルウェアを明示的に含める必要があります。
from werkzeug.debug import DebuggedApplication
from waitress import serve
app = DebuggedApplication(app, evalex=True, pin_security=False)
serve(app, listen='*:8080')
これを行うと、evalex
およびpin_security
上記のオプションを選択すると、アプリはリモートの侵害に対して自明に脆弱になります。