gpt4 book ai didi

php - Symfony2 防火墙 : protect/web folder

转载 作者:搜寻专家 更新时间:2023-10-31 21:30:06 29 4
gpt4 key购买 nike

我正在开发一个完全受防火墙保护的 SF2 网络应用程序:在登录之前,任何人都不能看到或修改任何内容(当然,登录表单除外)。

所以这里是 firewall我的一部分 security.yml文件:

firewalls:
dev:
pattern: ^/(_(profiler|wdt)|css|images|js)/
security: false
main_login:
pattern: ^/login$
anonymous: true
main:
pattern: ^/
anonymous: false
form_login:
login_path: fos_user_security_login
check_path: fos_user_security_check
logout:
path: fos_user_security_logout
target: /

这很好用:如果我输入 url http://mywebsite.com/app.php/article/show/1未登录时,我将转到登录页面。

我的问题是我有一些文档和媒体文件位于 Symfony 的 web 中目录(例如 myapp/web/document/myTextFile.txt )。登录用户可以通过我的应用访问它们,非登录用户也可以访问它们!

任何输入 http://mywebsite.com/app.php/document/myTextFile.txt 的人可以下载文件...

为什么 pattern: ^/ 没有线防止这个?是 web默认情况下排除的文件夹,因为它包含 app.phpjs/css/文件夹?

如何保护我的文档?


更新:显示 protected 图像

我尝试了 Gerry 建议的解决方案,它可以很好地保护我的文档下载。

不过,我的document里也有照片文件夹,我想显示这些图片,直接包含在相关页面中。

例如,在http://mywebsite.com/app.php/article/show/1会有一些文字和图片myapp/app/Resources/document/AAA.jpg ,并在 http://mywebsite.com/app.php/article/show/2会有一些文字和图片myapp/app/Resources/document/BBB.jpg

我尝试用 Assetic 来做,但它似乎是针对“静态”图像(如顶部 Logo 或不依赖于对象的图像)完成的。

我看到的一个解决方案是将图像转换为 Base64 并像这样包含它:<img alt="" src="data:image/png;base64(...)" /> ,但它看起来真的很丑......

最佳答案

Web 目录是您的公共(public)根目录,由网络服务器 (Apache/Nginx/...) 提供服务。

默认情况下,对现有文件的任何请求根本不会通过 Symfony,因此没有防火墙设置会阻止对驻留在 Web 根目录中的文件的访问。

干净的解决方案是将这些文件移动到另一个目录,在 webroot 之外,例如 app/Resources/uploads。然后你可以编写一个 Symfony Controller 来下载这些文件。

关于php - Symfony2 防火墙 : protect/web folder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30869533/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com