/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
Access control
Fra : Jeppe Vesterbaek


Dato : 05-02-05 17:35

Hej

Jeg har postet dette spørgsmål i gruppen før, men fik ikke noget svar,
der kunne bruges til at løse mit problem => jeg prøver igen.

Jeg har en php-webside med brugerlogin. Brugernavn/password er gemt i en
mysql database. Brugerlogin håndteres vha. sessions/cookies.

Jeg har en række mapper, jeg gerne vil have beskyttet, så det kun er
folk, der er logget ind via min php-side, der har adgang til dem. Den
umiddelbare løsning er at beskytte mapperne med apache .htaccess filer,
men jeg vil ikke have, at folk skal indtaste deres brugernavn og
password igen, efter de er logget ind via php (det virker uprofessionelt).

Havde det bare været enkelte filer, jeg ønskede at beskytte, kunne jeg
have placeret uden for min web-mappe, læse dem med php, skrive en ny
midlertidig fil til en bruger, der er logget ind og sende de nødvendige
headere. Dette virker dog ikke her, da jeg gerne vil give adgang på
mappe-niveau, f.eks. for at give brugere adgang til en install shield
online installation.

Altså: Findes der en måde hvorpå jeg kan kontrollere adgang på
mappeniveau, hvor folk logget ind via php sessions?

/Jeppe

 
 
Thomas Lindgaard (05-02-2005)
Kommentar
Fra : Thomas Lindgaard


Dato : 05-02-05 19:43

On Sat, 05 Feb 2005 17:34:41 +0100, Jeppe Vesterbaek wrote:

> Altså: Findes der en måde hvorpå jeg kan kontrollere adgang på
> mappeniveau, hvor folk logget ind via php sessions?

Øhm... jeg plejer at gøre noget ala følgende:

beskyttet_fil.php
<?php
session_start();
require './authentication.php';
...
?>

authentication.php
<?php
if ( !user_authenticated() )
{
$_SESSION['goto'] = $_SERVER['PHP_SELF'];
header('Location: login.php');
exit;
}
?>

login.php
<?php
session_start();
if ( login_user($username, $password) )
{
if ( isset($_SESSION['goto']) )
{
header('Location: '.$_SESSION['goto']);
unset($_SESSION['goto']);
}
else
{
header('Location: startside.php');
}
exit;
}
// bruger ikke logget ind og må nu hånes
?>

Alle beskyttede filer skal så bare inkludere authentication.php - men det
virker jo så kun på php-filer.

--
Mvh.
/Thomas


Jeppe Vesterbaek (05-02-2005)
Kommentar
Fra : Jeppe Vesterbaek


Dato : 05-02-05 20:53

Hej Thomas

> Alle beskyttede filer skal så bare inkludere authentication.php - men det
> virker jo så kun på php-filer.
>

Jeg er helt med på, hvordan beskytter adgang til div. php sider som du
skildrer det. Men det er ikke php filer, der skal beskyttes.

/Jeppe

Bertel Lund Hansen (05-02-2005)
Kommentar
Fra : Bertel Lund Hansen


Dato : 05-02-05 22:35

Jeppe Vesterbaek skrev:

> Jeg er helt med på, hvordan beskytter adgang til div. php sider
> som du skildrer det. Men det er ikke php filer, der skal
> beskyttes.

Besøgende på en side kan i praksis ikke få adgang til filer som
der ikke linkes til. Hvis du derfor kun har linkadgang gennem en
beskyttet PHP-fil, er alle dine filer beskyttet (de kan godt
linke indbyrdes). Den eneste måde man kan finde dem på, består i
at gætte det præcise stinavn og filnavn rigtigt og skrive det
manuelt i browserens adressefelt.

Det giver lige så god beskyttelse som et kodeord - bortset fra at
mappe- og filnavne næppe består af tilfældige tegn.

--
Bertel
http://bertel.lundhansen.dk/   Fiduso: http://fiduso.dk/

Jeppe Vesterbaek (05-02-2005)
Kommentar
Fra : Jeppe Vesterbaek


Dato : 05-02-05 23:47


> Besøgende på en side kan i praksis ikke få adgang til filer som
> der ikke linkes til. Hvis du derfor kun har linkadgang gennem en
> beskyttet PHP-fil, er alle dine filer beskyttet (de kan godt
> linke indbyrdes). Den eneste måde man kan finde dem på, består i
> at gætte det præcise stinavn og filnavn rigtigt og skrive det
> manuelt i browserens adressefelt.
>
> Det giver lige så god beskyttelse som et kodeord - bortset fra at
> mappe- og filnavne næppe består af tilfældige tegn.
>

Jeg skal f.eks. have opdateringer til et commercielt program liggende.
Nogle gange også online install shields til programmer, hvilket er en
mappe med en masse filer og undermapper. Kun bestemte må få adgang til
disse. Med dit forslag kan alle med det korrekte link hente tingene =>
meget let at omgå (folk udveksler jo links på kryds og tværs).

/Jeppe

Peter Farsinsen (05-02-2005)
Kommentar
Fra : Peter Farsinsen


Dato : 05-02-05 21:33

Hej

> Havde det bare været enkelte filer, jeg ønskede at beskytte, kunne jeg
> have placeret uden for min web-mappe, læse dem med php, skrive en ny
> midlertidig fil til en bruger, der er logget ind og sende de nødvendige
> headere. Dette virker dog ikke her, da jeg gerne vil give adgang på
> mappe-niveau, f.eks. for at give brugere adgang til en install shield
> online installation.

Jeg er ikke guru nok til at give et 'ja/nej' svar. Derfor kan jeg kun
sparke ind med, hvad jeg tidligere har prøvet og gode ideer.

Beskyttelse af dine mapper vha. .htaccess kombineret med en emuleret
mappeoversigt og en fil der læser den valgte fil er én lynhurtig
mulighed. Jeg går næsten ud fra, at du har overvejet den, men jeg finder
ikke rigtig noget argument imod i dit indlæg. Point beeing, den ene html
fil der præsentere en mappe er vel lige så god som den anden.

Alternativt kan du kigge på mulighederne med auto_prepend_file i
..htaccess. Jeg mener at du kan afvikle php deri, i så fald er det jo
temmelig nemt at afvikle et script der tjekker om brugeren er logget ind
og hvis ikke så smide en header('Location: http://fonyuser.com');

--
Peter Farsinsen
peter at farsinsen dot dk

Jeppe Vesterbaek (05-02-2005)
Kommentar
Fra : Jeppe Vesterbaek


Dato : 05-02-05 23:50

Hej Peter

> Beskyttelse af dine mapper vha. .htaccess kombineret med en emuleret
> mappeoversigt og en fil der læser den valgte fil er én lynhurtig
> mulighed. Jeg går næsten ud fra, at du har overvejet den, men jeg finder
> ikke rigtig noget argument imod i dit indlæg. Point beeing, den ene html
> fil der præsentere en mappe er vel lige så god som den anden.

Jeg har f.eks. diverse online install sheilds liggende til at lave
online installationer af programmer gennem en activeX component. Disse
består af en række filer og undermapper => ovenstående løsning virker ikke.

> Alternativt kan du kigge på mulighederne med auto_prepend_file i
> .htaccess. Jeg mener at du kan afvikle php deri, i så fald er det jo
> temmelig nemt at afvikle et script der tjekker om brugeren er logget ind
> og hvis ikke så smide en header('Location: http://fonyuser.com');

Se, det lyder mere interessant. Jeg vil kigge på det i morgen, når jeg
er lidt mere frisk.

Tak for hjælpen.

/Jepe

Peter Farsinsen (07-02-2005)
Kommentar
Fra : Peter Farsinsen


Dato : 07-02-05 16:26

Jeppe Vesterbaek wrote:

>>Alternativt kan du kigge på mulighederne med auto_prepend_file i
>>.htaccess. Jeg mener at du kan afvikle php deri, i så fald er det jo
>>temmelig nemt at afvikle et script der tjekker om brugeren er logget ind
>>og hvis ikke så smide en header('Location: http://fonyuser.com');
>
>
> Se, det lyder mere interessant. Jeg vil kigge på det i morgen, når jeg
> er lidt mere frisk.

Tør man spørge hvordan det er gået? Jeg er ikke helt sikker udi, hvad
der er muligt vha. auto_prepend_file så en lille opfølger ville da være
spændende.

--
Peter Farsinsen
peter at farsinsen dot dk

Jeppe Vesterbaek (08-02-2005)
Kommentar
Fra : Jeppe Vesterbaek


Dato : 08-02-05 06:55

Hej Peter

> Tør man spørge hvordan det er gået? Jeg er ikke helt sikker udi, hvad
> der er muligt vha. auto_prepend_file så en lille opfølger ville da være
> spændende.
>

Jeg har simpelthen haft så meget mellem ørerne, så jeg har ikke fået
prøvet endnu :/ .. men skal naturligvis nok vende tilbage med opfølger,
når jeg får kigget på det.

Mvh Jeppe

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste