Forum » Izdelava spletišč » Kako omejiti dostop do URL-ja datoteke z geslom
Kako omejiti dostop do URL-ja datoteke z geslom
poweroff ::
Imam eno vprašanje glede PHP. Recimo da ima spletno stran, kjer imam gor neke datoteke v PDF in JPG obliki (lahko tudi kaj drugega, recimo ZIP).
Dostop do spletne strani bi rad omejil z geslom - to ni problem narediti. Problem je pa v tem, da so na spletni strani potem linki, za katere si lahko obiskovalec zapomni kompleten URL.
Se pravi če nekdo dobi geslo, lahko pogleda katere datoteke so gor in potem naprej razpošlje direktne URLje do PDFjev.
Kako se temu izogniti, se pravi, kako narediti neko skriptico, ki bi pogledala ali ima uporabnik veljaven žeton (se pravi je prišel gor z geslom) in mu potem posredovala datoeko oz. če ne, izpisal anapako.
Tole recimo ni OK: namesto, da kličem dokument.pdf, kličem geslo.php?dokument.pdf in če geslo ni OK, izpiše obvestilo, če pa je, pa pošlje datoteko, vendar uporabnik tukaj spet vidi URL do datoteke.
Dostop do spletne strani bi rad omejil z geslom - to ni problem narediti. Problem je pa v tem, da so na spletni strani potem linki, za katere si lahko obiskovalec zapomni kompleten URL.
Se pravi če nekdo dobi geslo, lahko pogleda katere datoteke so gor in potem naprej razpošlje direktne URLje do PDFjev.
Kako se temu izogniti, se pravi, kako narediti neko skriptico, ki bi pogledala ali ima uporabnik veljaven žeton (se pravi je prišel gor z geslom) in mu potem posredovala datoeko oz. če ne, izpisal anapako.
Tole recimo ni OK: namesto, da kličem dokument.pdf, kličem geslo.php?dokument.pdf in če geslo ni OK, izpiše obvestilo, če pa je, pa pošlje datoteko, vendar uporabnik tukaj spet vidi URL do datoteke.
sudo poweroff
poweroff ::
V bistvu to ni čisto prava rešitev, ker bi želel imeti one-time gesla.. se pravi nekomu dam geslo, on vstopi enkrat, naslednjič (ko zapre sejo) pa ne more več dostopati.
Gre za to, da bi rad za nekatere omejil dostop časovno - da nimajo z enim geslom večkratnega dostopa.
Gre za to, da bi rad za nekatere omejil dostop časovno - da nimajo z enim geslom večkratnega dostopa.
sudo poweroff
McAjvar ::
dokaj simpelj. naredis skriptico, kateri preko nekega kljuca poves, katero datoteko bi rad. skripta potem recimo v bazi na podlagi pogleda, katera datoteka je to in bere datoteko z diska in jo posilja uporabniku. v sami skripti pa imas potem mirno lahko urejeno drevje pogojev, preko katerih se odlocis, ali bos datoteko poslal ali ne.
za php si oglej funkcijo readfile() denimo. in pa header(), da bos poslal prave headerje pred tem. ce rabis kak primer, povej.
[edit] mmg. tako imas lahko npt. vse datoteke tudi izven document_root direktorija, nekje na varnem, tako da nihce, ki bi ugibal, ne more priti do datotek, ker ne ve, kje se nahajajo.
za php si oglej funkcijo readfile() denimo. in pa header(), da bos poslal prave headerje pred tem. ce rabis kak primer, povej.
[edit] mmg. tako imas lahko npt. vse datoteke tudi izven document_root direktorija, nekje na varnem, tako da nihce, ki bi ugibal, ne more priti do datotek, ker ne ve, kje se nahajajo.
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov
but an exercise in the limiting of privacy."
- Isaac Asimov
Zgodovina sprememb…
- spremenil: McAjvar ()
Seadoo ::
Kar je napisal McAjvar je najboljša rešitev. Datoteke umaknit iz htdocs direktorija web strežnika, tako da tudi z ugibanjem obiskovalec ne more do datotek, ker jih preprosto ni v direktoriju, ki ga server nudi obiskovalcem (security by obscurity sucks). Poskrbet moraš le, da jih Php z readfile() ukazom vidi.
Potem pa rabiš še bazo, v kateri hraniš informacije o datotekah in potrebne passworde. Če so ti one-time ali večkratni je itak samo stvar implementacije...
Potem pa rabiš še bazo, v kateri hraniš informacije o datotekah in potrebne passworde. Če so ti one-time ali večkratni je itak samo stvar implementacije...
Out of my mind. Back in five minutes.
McAjvar ::
<?php // do semle ga lahko serjes po mili volji, login/user-verifikacija/doziranje klistirja, etc :) // od koder pac zelis privleces ime fajla, jaz imam to navadno v bazi // to je samo povsem osnovni promer, kjer se niti ne ukvarjam z nestandardnimi znaki v imenu, ce fajla ni, ... // tu samo predpostavljam, da fajl obstaja $File = $row["doc_file"]; // npr /pot/do/neke/datoteke.pdf $Name = basename ($File); $Size = filesize ($File); header ('Pragma: public'); header ('Cache-Control: must-revalidate, post-check=0, pre-check=0'); header ('Content-Type: application/save'); header ('Content-Disposition: attachment; filename="'.$Name.'"'); header ('Content-Length: '.$Size); readfile ($File); // koncaj izvajanje exit; ?>
tale nabor headerjev po mojih izkusnjah dela. mogoce komu kaj ne bo vsec, samo tole mi je delalo z explorerjem, ff, opero, preko http in https. in s temle tudi npr. dosezes, da tudi imperial exploder shrani pdf datoteke in jih ne gre odpirat.
to ti lahko sluzi kot primer, pred tem kosom kode pa naredi, kar zelis, preveri, kar rabis, da se odlocis, ali naj uporabnik lahko downloada datoteko ali ne.
v osnovi je to to, ce pa rabis se kak nasvet glede tega, se kak primer --> zs.
"[...] the advance of civilization is nothing
but an exercise in the limiting of privacy."
- Isaac Asimov
but an exercise in the limiting of privacy."
- Isaac Asimov
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | Število uporabnikov Slotech 2015Oddelek: Loža | 2225 (1844) | Unknown_001 |
» | TrueCrypt 5.0 (strani: 1 2 )Oddelek: Novice / Zasebnost | 11057 (8469) | poweroff |
» | PHP autentikacija - problemOddelek: Izdelava spletišč | 1613 (1418) | krho |
» | Katera spletna tehnologija bi bila najbolj primerna?Oddelek: Izdelava spletišč | 1662 (1287) | mte |
» | zascita appserverja z geslomOddelek: Izdelava spletišč | 722 (674) | McAjvar |