Načtení php souboru z app/model pomocí JS ve složce WWW

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
Joacim
Člen | 229
+
0
-

Zdravím,

mám php soubor scan, který odesílá JSON array s informacemi o adresářové struktuře a složkách daného adresáře. (zatím umístěný ve složce WWW)

Dále mám JS soubor který si přes $.GET

$.get('../scan.php', function (data) { ... }

Načte skript php a v JS data je JSON s polem polí. (umístěný standartně ve WWW/JS/)

Jedná se o Cute file browser který jsem musel opravit, aby fungoval nějako korektně.

Má otázka zní: Mám scan.php dát do app/model a v .htaccess povolit přístup jen k tomuto souboru (poté by se stejně jednalo o stejnou věc jako v adresáři WWW), nyní mám do app/model přístup odepřen (403). Ptám se zda se nejedná o bezpečnostní díru
scan.php vypisuje pouze:

{"name":"Documents","type":"folder","path":"Documents","items":[{"name":"21st Century C, 2nd Edition.pdf","type":"file","path":"Documents\/21st Century C, 2nd Edition.pdf","size":5964461,"modified":"10\/02\/2015 13:29:51"},{"name":"Aliasing in Object-Oriented Programming.pdf","type":"file","path":"Documents\/Aliasing in Object-Oriented Programming.pdf","size":7269422,"modified":"10\/02\/2015 13:26:11"},{"name":"Apache- The Definitive Guide, 3rd Edition.pdf","type":"file","path":"Documents\/Apache- The Definitive Guide, 3rd Edition.pdf","size":2425043,"modified":"10\/02\/2015 13:53:49"},{"name":"Digital Photography Pocket Guide, 3rd Edition.pdf","type":"file","path":"Documents\/Digital Photography Pocket Guide, 3rd Edition.pdf","size":1111203,"modified":"10\/02\/2015 14:11:30"}]}
  1. Potřebuji nějako ošetřit, aby mohl tento script spustit jen přihlášený uživatele a nešel spustit pokud zadám url adresu k souboru http://test/scan.php nebo přímo k obsahu složky se soubory jako je pdf atd http://test/Documents/21st%20Century%20C,%202nd%20Edition.pdf
  2. Též potřebuji zabezpečit, aby se k souboru dostali jen přihlášení uživatele

Možná to ani ošetřit nejde tímto způsobem, jediná varianta co mě napadla je htaccess s heslem na složku.

Případně dokážu alespon nějako ověřit že je uživatele přihlášen, existence session ?

Díky moc za pomoc :D

Editoval Joacim (17. 2. 2016 14:46)

amik
Člen | 118
+
0
-
  • veřejně přístupný soubor bych do app vůbec nedával, složka app by vůbec neměla být zvenku přístupná, bez výjimek. Když už takový soubor musí být, tak ve složce www (klidně do složky www jen soubor, který udělá require ‚../app/scan.php‘.
  • proč to máš vůbec jako samostatný soubor? já bych na to udělal normálně presenter s akcí, která vrátí JsonResponse s výsledkem, v nette aplikaci, tam si jednoduše ověříš oprávnění přihlášeného uživatele nebo cokoli dalšího.
  • k dotazu, zda by to šlo zabezpečit přímo v tom souboru – šlo, ale blbě a ošklivě, raději to ani nepíšu, raději to vyřeš jak píšu výše :)
Joacim
Člen | 229
+
0
-

amik napsal(a):

  • veřejně přístupný soubor bych do app vůbec nedával, složka app by vůbec neměla být zvenku přístupná, bez výjimek. Když už takový soubor musí být, tak ve složce www (klidně do složky www jen soubor, který udělá require ‚../app/scan.php‘.
  • proč to máš vůbec jako samostatný soubor? já bych na to udělal normálně presenter s akcí, která vrátí JsonResponse s výsledkem, v nette aplikaci, tam si jednoduše ověříš oprávnění přihlášeného uživatele nebo cokoli dalšího.
  • k dotazu, zda by to šlo zabezpečit přímo v tom souboru – šlo, ale blbě a ošklivě, raději to ani nepíšu, raději to vyřeš jak píšu výše :)

Díky za rady, nakonec jsem přesunul scan.php do presenteru a JS jsme přepsali na nette.ajax.

Přesto musím ve složce www/Docs mít .htacces PWD, jelikož je složka www dostupná a kdyby znal utočník přesný název souboru jednoduše by zadal celou adresu k souboru a ten by se mu zobrazil.