MASIVNA sigurnosna rupa u Laravelu

Ovo su tvorci Laravela morali napraviti drugačije jer ovo je epidemija. Znam da env treba sakriti, znam i kako ga sakriti, međutim to je trebao biti prioritet frameworka (sigurnost).
Googlajte: db_password filetype:env
Ne znam koliko ljudi koristi na forumu Laravel, pa pripazite da se ne desi i vašem projektu.

Pa ništa ne treba biti u web accessible directory-ju osim public-a?
Tipa, u VrtualHosts podešavanju imaš

# Ensure that Apache listens on port 80
Listen 80
<VirtualHost *:80>
    DocumentRoot "/var/www/example.com/public" # <= public is MOST important
    ServerName www.example.com

    # Other directives here
</VirtualHost>

Svako drugačije igranje sa serverom je opasno.

Ja radim sljedeće na Linux/Apache-u (malo se razlikuje od podešavanja iznad pa oprezno):

  1. kompletan projekat imam na nekoj deep inside lokaciji, recimo
    ~/websites/example.com
    ^ tu se nalaze svi Laravel (ili bilo koji drugi for that matter) fajlovi
  2. napravim simbolic link u
    ln -s /home/username/websites/example.com/public /var/www/example.com
    ^ bitno je primijetiti da linkujem public dir i ništa više
  3. sudo nano /etc/apache2/sites-available/example.com.conf
    ^ napravim conf file koji je samo vezan za tu sym linked lokaciju i nema veze sa lokacijom gdje je Laravel projekt
  4. U fajlu postavim
    DocumentRoot /var/www/example.com
    ^ sad će ovo imati uvid samo u public od projekta

I riješen problem.

1 Like

U biti to nije propust ni Taylera niti Laravela, to je proupust Admina servera. Ali @tpojka ti je vec sve objasnio. Nema potrebe da kompletna aplikacija bude u www root folderu dovolajn je samo public folder.

1 Like

Ma znam, čitam docs, pratim grupe i laracast, sve mi je jasno što se postavljanja Laravela na server tiče. Međutim smatram da .env nisu trebalo tako postaviti niti nazvati. Zašto nije npr. env.php?

Nema ovo veze s Laravelom niti je ikakva Laravel-specific sigurnosna rupa.

I da se zove env.php opet nisi rijesio problem vec si ga samo gurnuo na drugo mjesto, a to je da i dalje imas neispravno setupiran webserver.

Setupiras webserver kako spada i nemas ovaj problem.

btw poz @creatifcode, dugo te nije bilo. ;]

Plus se i fajl može nazvati env.php.
Framework koristi vlucas/dotenv package i može se vidjeti kako da se postave dodatna podešavanja.
Opet, slažem se sa @tony da se ne postiže ništa u vezi sa inicijalnim problemom.

.env (ako se pogrešno postavi Laravel na server) očito bude indexiran od crawlera. A kada ga indeksira - javno je dostupan sadržaj datoteke.
Da ga postavi u .php file - ne može biti (po defaultu) javno dostupan i vidljiv sadržaj datoteke.
Na to sam mislio.
Problem nije datoteka i njen sadržaj, problem je (uz neispravno postavljanje Laravela na server) laka dostupnost .env datoteke i pregled njenog sadržaja.

Nema to veze sa Laravel to je jednostavno propust kao sto je neko pomenuo onoga ko je podesio server i fino su taj dio opisali ovdje https://laravel.com/docs/5.7/configuration

Ali vjerovatno dobar dio koristi i shared hosting pa iz public prebace u public_html cio sadrzaj gdje im je i .env i samo promijene putanju u index.php i sami sebi napravili problem.