使用symfony保护文件管理

Dzi*_*mid 1 php symfony1 file-upload download

默认情况下,symfony将文件上传到web/upload文件夹,因此任何人都可以访问它们.我需要检查每个文件请求的用户凭据.我该怎么做?

Mae*_*lyn 5

将您的上传内容移到您的webroot之外,例如/ data/uploads.在这种情况下,您需要将它放在ProjectConfiguration文件中:

sfConfig::set('sf_upload_dir' => sfConfig::get("sf_data_dir") . DIRECTORY_SEPARATOR . 'uploads');
Run Code Online (Sandbox Code Playgroud)

如果您始终使用sf_upload_dir指定uploads文件夹,则所有文件都将保存在那里.

解决方案的第二部分需要一个新操作,它获取文件名,检查用户是否有权访问它,并返回:

  • 要么403错误
  • 或者readfile()在设置正确的Content-Type和Content-Lenght标题后,通过文件内容.