Autor | Zpráva | ||
---|---|---|---|
luma64 Profil |
#1 · Zasláno: 28. 9. 2021, 11:50:20
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 * |
#2 · Zasláno: 28. 9. 2021, 13:52:18
luma64:
Čím se liší přímé zadání URL od "přístupu z aplikace" (obojí vede na ten samý link)? |
||
luma64 Profil |
#3 · Zasláno: 28. 9. 2021, 14:04:54
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 |
#4 · Zasláno: 28. 9. 2021, 17:35:32
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 * |
#5 · Zasláno: 28. 9. 2021, 21:38:42
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ů. |
||
Časová prodleva: 5 dní
|
|||
luma64 Profil |
#6 · Zasláno: 4. 10. 2021, 08:18:48
Pozdravujem a ďakujem ! Pomohli ste mi všetci, návodom mi bol Keehi.
|
||
Časová prodleva: 3 roky
|
0