6
Tags:
diverse
Skrevet af
Bruger #5158
@ 31.01.2009
Ønsket om at lave kodeordsbeskyttede sider, er ofte det der bringer folk i kontakt med .htaccess. Det er nemt, funktionelt og rigtig godt til at genmme sine ting på nettet. Men hvis man vil lave egentlige brugerkonti, skal man i gang med noget database-baseret login.
Men I denne artikel drejer det sig om .htaccess, så her får alle godkendte brugere lige adgang til den samme mappe.
Bemærk: Der er ingen mulighed for at logge af, når brugeren først har logget sig på. Det er først når browseren bliver lukket, at adgangen til de beskyttede mapper bliver nulstillet.
.htpasswrd
Når man vil lave adgangskontrol, skal man først lave en fil med nogle brugernavne og kodeord.
I dette eksempel bliver den fil kaldt ".htpasswrd", men den kan i princippet hedde hvad som helst. Det er en skjult fil ligesom .htacces-filen, men i de mest gunstige tilfælde er det faktisk ikke engang nødvendigt. Man skal nenmlig helst have den væk fra de offentlige mapper og helt ud i roden
inden webmappen.
Hvis ens fulde sti til webmappen eksempelvis hedder:
/rod/stisystem/www/
skal ".htpasswrd" lægges i noget der måske ligner:
/rod/stisystem/koder/
Grunden til at man skal holde denne fil ude af de offentlige mapper, er at så er det kun de ting der bliver afviklet på serveren der kan komme ind til kan komme ind til den.
Selve filen indeholder blot brugernavne og adgangskoder, adskildt af et kolon ( : ). Et brugernavn:kodeord på hver linie. Kodeordene er krypteret i base64-kryptering.
Eksempel på en .htpasswrd-fil
Janus:amvyvgvTcVbnI
Peter:cGopgUPEEqkn6
I eksemplet har to personer adgang med disse brugernavne og kodeord:
Janus:janus
Peter:peter
Bemærk: Der bliver skelnet mellem store og små bogstaver
Det er nemt at finde generatorer på nettet, så man kan lave sine egne kodeord.
Tryk her for at google en Passwordgenerator.
Eller lav hurtigt en php-fil med denne kode og så har du en selv:
generator.php- <?php
- // Er lavet simpel for overskuelighedens skyld
- echo "<form action=\"$PHP_SELF\" method=\"post\">";
- echo " Indtast brugernavn og kodeord";
- echo " <br>";
- echo " Brugernavn:";
- echo " <br>";
- echo " <input name='brugernavn' value='$brugernavn'>";
- echo " <br>";
- echo " Kodeord:";
- echo " <br>";
- echo " <input name='kodeord' value='$kodeord'>";
- echo " <br>";
- echo " <input type='submit' value='Kør'>";
- echo "</form>";
- if ($brugernavn && $kodeord) {
- $krypt = crypt("$kodeord",base64_encode("$kodeord"));
- echo "<br>";
- echo "Brugernavn: $brugernavn";
- echo "<br>";
- echo "Kodeord: $krypt";
- echo "<br>";
- echo "<br>";
- echo "Indsæt denne linie i .htpasswrd:";
- echo "<br>";
- echo "$brugernavn:$krypt</p>";
- }
- ?>
.htaccess
Den stump kode der kommer her, skal kun tilføjes i de mapper der skal adgangskontrolleres.
Altså skal det ikke i den .htaccess-fil der ligger i rodbiblioteket, hvis det ikke er hele webstedet der skal have adgangskontrol.
I vedkommende .htaccess-fil tilføjes følgende kode:
AuthType Basic
AuthUserFile /rod/stisystem/koder/.htpasswrd
AuthName "Dette er privat område"
require valid-user
Der er nogle ting i den bid kode som kræver en forklaring:
AuthUserFileDen
fulde sti til .htpasswrd.
Den kan godt være lidt svær at finde, men hvis det går helt galt, kan man lige lave en lille php-fil med dette indhold:
- <?php
- echo dirname(__FILE__);
- ?>
Når man kalder den fil, kan man se stien til hvor man er. Så burde det være rimelig enkelt at regne ud hvordan stien til ".htpasswrd" skal se ud.
AuthNameHer er der frit valg til at skrive hvad man lyster. Det kommer til at stå i den dialog-boks der "popper" op.
require valid-userHer defineres, at alle der er oprettet som brugere i ".htpasswrd" har adgang.
Man kunne have valgt, at det kun var Janus der måtte komme her:
require user Janus
Hvis mere end een har adgang, skrives brugernavnene med mellemrum:
require user Janus Peter
Nu er mappen med .htacces-filen og alle undermapperne kodeordsbeskyttede.
Beskyt enkelte filer
Hvis man kun ønsker at beskytte enkelte filer og ikke hele mapper kan det gøres således:
AuthType Basic
AuthUserFile /rod/stisystem/koder/.htpasswrd
AuthName "Dette er privat område"
# Det ligner det tidligere eksempel
# Men nu er det kun to filer der er beskyttet
<files hemmelige-oplysninger.php meget-hemmelige-oplysninger.php>
require valid-user
</files>
Man kan også vælge at have beskyttet hele mappen, men alligevel "ekstra-beskytte" nogle af filerne i mappen:
AuthType Basic
AuthUserFile /rod/stisystem/koder/.htpasswrd
AuthName "Dette er privat område"
require valid-user
# Ovenstående er helt identisk med tidligere eksempel
# Men der er lige en regel med en særlig fil
<files admin.php>
Require user Janus
</files>
Alle godkendte brugere bliver lukket ind i mappen. Men for at se filen "admin.php", skal man være "Janus".
Tips og tricks
Når man har en kodeordsbeskyttet mappe på sin hjemmeside, som man ofte tilgår hjemmefra, kan det være ret irriterende, altid at skulle igennem adgangskontrollen.
Hvis man har fast IP-adresse, kan det måske være en lettelse at åbne for sin egen IP-adresse, mens alle andre stadig skal logge sig på.
Det kan gøres ved at tilføje dette i filen:
order deny,allow
deny from all
# 66.249.71.244 skal skiftes ud med den aktuelle IP-adresse.
allow from 66.249.71.244
satisfy any
Tryk her for at finde den aktuelle IP-adresse.
Hvad synes du om denne artikel? Giv din mening til kende ved at stemme via pilene til venstre og/eller lægge en kommentar herunder.
Del også gerne artiklen med dine Facebook venner:
Kommentarer (2)
Wow!!!
Jeg har altid været ret god med .htacces men det her slår alt.. Jeg kan virkelig godt lide den med at man skal være en bestemt bruger for at få en bestemt fil!!!
Et stort 5 tal til dig!
5/5 herfra! Skide godt med nogle guider omkring .htaccess! FREMRAGENDE!
Du skal være
logget ind for at skrive en kommentar.