Autor Zpráva
luma64
Profil
Na web serveri mám v adresári www/html/ viacero adresárov, kde mi bežia aplikácie, teda napríklad: www/html/aplik1 , www/html/aplik2.
Robím v nich exporty pod užívateľom apache do adresára export ( napríklad www/html/aplik1/export/subor1.txt).
Neviem ako zabezpečiť, keď sa taký súbor vytvorí, aby nebol prístupný na čítanie inak ako cez aplikáciu.
Napríklad ak niekto bude skúšať cestu v prehliadači a súbor náhodou otvorí... Vďaka !
anonym_
Profil *
luma64:
Čím se liší přímé zadání URL od "přístupu z aplikace" (obojí vede na ten samý link)?
luma64
Profil
Je to ten isty adresár, vytvára sa v ňom súbor, ktorému je v aplikácii ponúknutý link a može si súbor stiahnuť prípadne otvoriť. Toto sa deje v aplikácii.
Je však možnosť, že niekto, kto nie je v aplikácii prihlásený uhádne cestu s názov súboru tento si otvorí cez web prehliadač. A vidí to isté ako užívateľ, ktorý súbor vytvoril.
Keeehi
Profil
luma64:
V takovém případě bude nejlepší přes htaccess zakázat přístup do adresáře. A data pak zpřístupnit přes php script, který je po ověření uživateli odešle.

Soubor: www/html/aplik1/downloader.php
<?php
// nějaké ověření že uživatel má právo číst soubor

$file_url = 'export/'.$_GET['name'];
header('Content-Type: application/octet-stream');
header("Content-Transfer-Encoding: Binary"); 
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\""); 
readfile($file_url);

Příklad je samozřejmě zjednodušený. Je potřeba pořádně ošetřit uživatelský vstup $_GET['name']. Například url www.tvoje-aplik1.cz/downloader.php?name=../index.php by byla takto bez ošetření velmi problematická.
N71
Profil *
Keeehiho způsob se běžně používá u souborů rozumné velikosti, u větších je to pak ale potenciálně problematické. Uplatňují se tady různé časové limity PHP nebo Fast/CGI, určitě je třeba pohlídat (vypnout) output buffer a pochopitelně se po dobu stahování blokuje jedno vlákno PHP. Samozřejmě taky nefunguje jakékoliv navázání přerušeného stahování.

V závislosti na tom, jak přísné má být ověření na straně stahovaného souboru, jdou použít některé možnosti webserveru (Apache?). Třeba kontrolu hodnoty cookie pomocí rewrite. Taky existuje mod_xsendfile, určený přímo na stažení jinak nedostupných souborů.
luma64
Profil
Pozdravujem a ďakujem ! Pomohli ste mi všetci, návodom mi bol Keehi.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0