Flask での静的ファイルの提供: 包括的なガイド
Flask は、通常 HTML ページ、スタイルシート、 JavaScript ファイル。簡単そうに見えますが、セキュリティの脆弱性を回避するために推奨されるアプローチを理解することが重要です。
フォルダー構成の使用
運用環境では、静的ファイルの提供を専用 Web に委任します。 Nginx や Apache などのサーバーを使用して、高トラフィックを効率的に処理します。静的ファイルを含む特定のフォルダーへのリクエストを処理するようにこれらのサーバーを構成します。
Flask の静的ファイル ルート
Flask は、「/」にある静的ファイルのルートを自動的に確立します。 Flask アプリに隣接する「static」フォルダー。このルートには、url_for:
url_for('static', filename='js/analytics.js')
send_from_directory を使用してアクセスできます。
カスタム ルートまたは権限チェックが必要な場合は、send_from_directory を検討してください。これにより、ユーザー指定のパスが安全なディレクトリ内に確実に含まれるようになります。
@app.route('/reports/<path:path>') def send_report(path): return send_from_directory('reports', path)
セキュリティに関する考慮事項
ユーザー指定のパスで send_file または send_static_file を使用することは避けてください。これらの方法は、ディレクトリ トラバーサル攻撃に対して脆弱です。代わりに、既知のディレクトリ内でユーザーが指定したパスを安全に処理する send_from_directory を選択してください。
メモリからのファイルの提供
ファイルに書き込まれずにメモリ内で生成されたファイルの場合ファイル システムの場合は、BytesIO オブジェクトを send_file に渡します。推論できないファイル メタデータには追加の引数を指定します。
以上がFlask アプリケーションで静的ファイルを安全に提供するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。