Php 使用symfony实现安全的文件管理
默认情况下,symfony会将文件上载到web/upload文件夹,因此任何人都可以访问这些文件。我需要检查每个文件请求的用户凭据。我应该怎么做呢?将您的上传移到webroot之外,就像在/data/uploads中一样。在这种情况下,您需要将其放入ProjectConfiguration文件中:Php 使用symfony实现安全的文件管理,php,file-upload,symfony1,download,Php,File Upload,Symfony1,Download,默认情况下,symfony会将文件上载到web/upload文件夹,因此任何人都可以访问这些文件。我需要检查每个文件请求的用户凭据。我应该怎么做呢?将您的上传移到webroot之外,就像在/data/uploads中一样。在这种情况下,您需要将其放入ProjectConfiguration文件中: sfConfig::set('sf_upload_dir' => sfConfig::get("sf_data_dir") . DIRECTORY_SEPARATOR . 'uploads');
sfConfig::set('sf_upload_dir' => sfConfig::get("sf_data_dir") . DIRECTORY_SEPARATOR . 'uploads');
如果您总是使用sf_upload_dir指定上载文件夹,那么您的所有文件都将保存在那里
解决方案的第二部分需要一个新操作,该操作获取文件名,检查用户是否有权访问该文件,并返回:
- 要么是403错误
- 或者在设置了正确的内容类型和内容长度标题后,通过
查看文件内容readfile()
sfConfig::set('sf_upload_dir' => sfConfig::get("sf_data_dir") . DIRECTORY_SEPARATOR . 'uploads');
如果您总是使用sf_upload_dir指定上载文件夹,那么您的所有文件都将保存在那里
解决方案的第二部分需要一个新操作,该操作获取文件名,检查用户是否有权访问该文件,并返回:
- 要么是403错误
- 或者在设置了正确的内容类型和内容长度标题后,通过
查看文件内容readfile()
readfile
的影响。使用readfile(根据对的注释)会产生很大的问题。是否有办法将文件保留在web目录中并仍然能够管理它们?是的-您可以使用.htaccess文件来阻止直接访问这些文件。无论如何,您都需要一个操作来检查权限。您像调用任何其他函数一样调用它-没有“symfony”方法来执行此操作。我的意思是,它直接写入输出缓冲区,如果您只是在操作中调用它-那么symfony将无法正确地输出头。我是否必须用ob_start()捕捉输出并将其传递给$this->getResponse()->setContent()?内容类型和内容长度都是标题,它们不应该受到readfile
的影响。使用readfile(根据对的注释)会产生很大的问题。是否有办法将文件保留在web目录中并仍然能够管理它们?是的-您可以使用.htaccess文件来阻止直接访问这些文件。无论如何,您都需要一个操作来检查权限。