2010-11-18 8 views
1

デフォルトでは、symfonyはファイルをweb/uploadフォルダにアップロードするので、誰にでもアクセスできます。私はファイルへのすべての要求でユーザーの資格情報をチェックする必要があります。私はこれをどのようにするべきですか?symfonyによる安全なファイル管理

答えて

5

/data/uploadsのように、ウェブルートの外にアップロードを移動します。その場合、あなたはあなたにProjectConfigurationファイルでこれを配置する必要があります:

あなたは常にアップロードフォルダを指定するためにsf_upload_dirを使用し、すべてのファイルが保存されますことを提供
sfConfig::set('sf_upload_dir' => sfConfig::get("sf_data_dir") . DIRECTORY_SEPARATOR . 'uploads'); 

。ユーザーがそれにアクセスしている場合

ソリューションの第二部では、ファイル名を取得し、新しいアクション、チェックを必要とし、リターン:

  • 403エラー
  • またはファイルの内容のいずれかを経由してreadfile()、正しいContent-TypeヘッダーとContent-Lengthヘッダーを設定した後。
+0

symfonyでreadfile()を正しく呼び出すにはどうすればよいですか? – Dziamid

+0

他の関数と同じように呼びます。これを行うための "symfony"の方法はありません。 – Maerlyn

+0

あなたが単に動作中にそれを呼び出すと、出力バッファにまっすぐに書き込みます。そうすれば、symfonyはヘッダを適切に出力することができなくなります。 ob_start()で出力をキャッチして$ this-> getResponse() - > setContent()に渡す必要がありますか? – Dziamid

関連する問題