おい。readfile
PHP でメソッドを使用する際に注意すべきセキュリティ上の問題はありますか? さまざまなサードパーティのサーバーに保存されているファイルの URL を取得する readfile メソッドを使用したいと考えています。次に、ファイルをユーザーに提供します。直観的には、URL が任意のファイルを指している可能性があるため、リスクがあるように思えます。一方、私はこのreadfile
方法を (ファイルに依存しないデータを処理した後に) 使用しているだけで、サーバー上で悪意のあるものを実行できるかどうかはわかりません。また、マニュアルによると でURLを使いたい場合はreadfile
を有効にする必要があるようfopen wrappers
です。ありがとう。
3 に答える
readfile
サーバー上でコードを実行しないため、問題はありません。
ただし、見知らぬ人がサーバーを使用して Web リクエストを実行し、不正なリクエストを行ったり、過負荷を引き起こしたりしてサーバーをトラブルに陥れる可能性があるため、この種の機能をコーディングするときはそのことを念頭に置いておく必要があります。
マニュアルによると、readfileでURLを使いたい場合は、fopenラッパーを有効にする必要があるようです
はい、 allow_url_fopenがオンになっていることを確認する必要があります。そうでない場合は、 cURLの使用を検討する必要があります。
次の 2 点に集中する必要があると思います。
1) ユーザーが readfile で読み取るファイルを指定できないようにします。(ディレクトリトラバーサル攻撃などの可能性)
2) readfile によって読み取られるファイルをユーザーが変更できないようにします。(あらゆる種類のいたずらの可能性!)
readfile に関して遭遇する可能性が最も高い 2 つの攻撃ベクトルとして、これらが私の頭の中で思い浮かびます。
最大のセキュリティ リスクは、ファイルからファイルを提供するための不正な形式のリクエストが挿入されることです。つまり、相対パスを渡します。
注意しないと、Allow_url_fopen もセキュリティ リスクになります。readfile()、include() などを介して提供されたリクエストが PHP コードを解釈できるようにすることができます。