Laravel - Jak zablokować dostęp do folderu public/storage ?

Laravel - Jak zablokować dostęp do folderu public/storage ?
200
  • Rejestracja:około 8 lat
  • Ostatnio:4 miesiące
  • Postów:32
0

Czy istnieje jakiś sposób, aby zablokować dostęp do pliku, który jest w folderze public/storage? Bo każdy se może do niego wejść bezpośrednio wpisując poprawne url. Próbowałem zrobić middleware, ale się nie udało :(
web.php

Kopiuj
Route::get('/storage/upload/{filename}', 'ShowController@showPhoto')->middleware(show.image);

Middleware

Kopiuj
if(true == true)
      {
        return redirect('/');
      }
        return $next($request);
    }
Patryk27
Moderator
  • Rejestracja:ponad 17 lat
  • Ostatnio:prawie 2 lata
  • Lokalizacja:Wrocław
  • Postów:13042
1

Nie zapisuj plików do public?
Sama nazwa katalogu powinna dać Ci coś do myślenia :-P

A middleware nie sprawdza się w tym przypadku, ponieważ odwołania do plików statycznych (typu obrazy itd.) przeważnie nie przechodzą w ogóle przez Laravela (obsługuje je bezpośrednio Apache / nginx).


edytowany 3x, ostatnio: Patryk27
pol90
A to wtedy do jakiego katalogu jak nie public ?
200
pol90 Na inny ftp można zapisywać pliki
pol90
Na inny serwer ?
200
No tak, albo jak jest możliwość to można zrobić drugie konto ftp na tym samym serwerze
Patryk27
@pol90: możesz sobie utworzyć np. katalog storage/private, wszystko prywatne wrzucać tam i linkować do niego wtedy poprzez routing i odpowiedni kontroler.
200
  • Rejestracja:około 8 lat
  • Ostatnio:4 miesiące
  • Postów:32
0

Dziękuję za poradę. Zapisywałem pliki w public, bo myślałem, że będzie jakaś możliwość ograniczenia do nich dostępu, a jednak nie ma.

czysteskarpety
czysteskarpety
  • Rejestracja:około 10 lat
  • Ostatnio:ponad 4 lata
  • Lokalizacja:Piwnica
  • Postów:7697
1

ewentualnie z htaccess:

Kopiuj
<Files .htaccess>
Deny from all
</Files>

lub

Kopiuj
<Directory /wazne_pliki/>
Deny from all
</Directory>

mr_jaro
  • Rejestracja:prawie 14 lat
  • Ostatnio:ponad 3 lata
  • Lokalizacja:Grudziądz/Bydgoszcz
  • Postów:5300
2

Zaraz zaraz zaraz, w laravelu masz folder storage specjalnie do takich rzeczy przygotowany, jest na tym samym poziomie co public przez co przez url nie ma jak się tam dostać bo docroot powinien być public no i trzeba pamiętać o odpowiednich chmodach


It's All About the Game.
Patryk27
/storage/public jest symlinkowany pod /public/storage, reszta /storage jest rzeczywiście niedostępna publicznie.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.