2016-03-09 4 views
0

В настоящее время я работаю над проектом, используя php, apache server и symfony. То, что я пытаюсь достичь, - это запретить доступ к моим изображениям через http://localhost:8000/img/logoSmall.png прямо в строке URL. Я уже пытался Iusing в Option All -Indexes, но он не работает, я не знаю, если я делаю что-то неправильно, и я попробовал некоторые вещи из this поста, как:Защищать изображения от прямого доступа к URL?

RewriteEngine on 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost [NC] 
RewriteCond %{HTTP_REFERER} !^http://(www\.)?localhost.*$ [NC] 
RewriteRule \.(gif|jpg|png)$ - [F] 

и изменения

Options Includes Indexes FollowSymLinks MultiViews

в

Options Includes FollowSymLinks MultiViews 

Я также уверен, что мой файл httpd.conf имеет AllowOverride All

Я действительно не знаю, что еще делать. Я слишком долго застрял в этом, если вы видите какие-либо ошибки в моих решениях, или у вас есть какие-то предложения, которые я бы вникнул в них. Заранее спасибо.

EDIT

Я хочу продолжить отображение изображений на моем сайте, что я не хочу, чтобы другие пользователи получить доступ к ним с прямой URL.

+0

Вы хотите предотвратить доступ к файлам независимо от того, или просто, когда к ним напрямую обращаются из строки URL? Извините, я принял первое в своем ответе. – NighttimeDriver50000

+2

Нет надежного способа сделать это. Не стоит беспокоиться –

+0

Ну, вы можете полностью предотвратить доступ с моим ответом. Я предполагал, что OP собирался загружать файлы с PHP или что-то в URI данных, чтобы потенциальные URL-адреса для изображений никогда не использовались. – NighttimeDriver50000

ответ

-1

В apache2.conf (по крайней мере, это то, что я испытал его в):

<FilesMatch "\.(gif|jpg|png)$"> 
    Require all denied 
</FilesMatch> 

Примечание: Это предотвратит доступ к файлам даже в HTML-файлах. Единственный способ показать их на странице - включить их в HTML с data URIs, сгенерированным на вашем PHP.

0

У меня была схожая проблема, но в моем случае я использовал некоторую папку (Uploads) для файлов, загруженных пользователями (картинки профиля и т. Д.), А затем мне нужно было показать эти файлы только для определенных пользователей (владельца аккаунта и его контактов) ,

Мое решение: 1) в security.yml близкие загрузки папки всех пользователей, кроме Суперадминистратор

security: 
    access_control: 
     - { path: ^/uploads/, role: ROLE_SUPER_ADMIN } 

2) Если вам нужно пользователям, чтобы быть в состоянии загрузить файлы с сервера создать контроллер справиться с этим

use Symfony\Component\HttpFoundation\BinaryFileResponse; 

class DownloadController extends Controller 
{ 
    public function downloadAction(Request $request, $filepath = null) 
    { 
     if ($filepath){ 
      $response = new BinaryFileResponse($filepath); 

      return $response; 
     } 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^