保护Symfony 2中的下载链接

skw*_*kwi 8 security download symfony

在我的Symfony 2项目中,我有一个页面显示有关实体的信息.在此页面上还有指向与此实体关联的文件的链接.

页面是安全的,只有当用户作为特定角色时才能显示.每个实体的预期角色都不相同,因此它在Action中进行了动态测试.

我的问题是,即使页面是安全的,任何人都可以通过其URL访问该文件.只有当角色与页面显示的角色匹配时,我才希望它可以下载.

关于我应该怎么做,或者从哪里开始寻找的任何建议?

Flu*_*key 14

将文件移到公共目录之外,这样就无法通过URL访问它.在控制器中,如果用户具有正确的权限,则允许用户下载该文件.

您可以在控制器中使用它:

$headers = array('Content-Type'     => 'application/pdf',
                 'Content-Disposition' => 'inline; filename="file1.pdf"');

return new Response(file_get_contents($file), 200, $headers); 
Run Code Online (Sandbox Code Playgroud)

  • 对上述代码的一个改进是使用StreamedResponse将内容作为正文SF 2.1的一部分输出:http://symfony.com/doc/current/components/http_foundation.html#streaming-a-response (2认同)