我正在開發一個完全位於防火牆後面的SF2 web應用程序:在記錄日誌(當然除了登錄表單)之前,任何人都不應該能夠看到或修改任何東西。Symfony2防火牆:protect/web文件夾
因此,這裏是我的security.yml
文件的firewall
部分:
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: /
這工作正常:如果我輸入網址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.php
和js/
和css/
文件夾?
如何保護我的文檔?
更新:顯示受保護的圖像
我試圖通過格里提出的解決方案,它工作正常,以保護我的文檔的下載。
但是,我也在我的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做到這一點,但它似乎是爲「靜態」圖像完成的(如頂部標誌或不依賴於對象的圖像)。
一個解決方案,我看到的是,將圖像轉換爲Base64,包括像這樣:<img alt="" src="data:image/png;base64(...)" />
,但似乎真難看......
我覺得這個話題#1可以幫助你 [http://stackoverflow.com/questions/12148272/assetic-files-in-symfony-are-behind-the-firewall][1] [1 ]:http://stackoverflow.com/questions/12148272/assetic-files-in-symfony-are-behind-the-firewall –
你爲什麼不直接上傳你的圖片到src/My/MyBundle/Resources/public '? – D4V1D
那麼我應該在我的圖像的'src'('')中放什麼?因爲如果我把''和'app/console assetic:dump'或'app/console assets:install'放在一起,'app/Resources/documents'文件夾的內容將被複制(或者符號鏈接)回到'web/'! – Blacksad