Adgangskontrol via .htaccess

Tags:    php
Skrevet af Bruger #2787 @ 13.12.2002
Adgangskontrol via .htaccess

Adgangskontrol via .htaccess


Her er en quickguide til at beskytte mapper på din webserver. Cut/Paste kode-eksemplerne til filerne ".htaccess", "htpasswd" og "htadmin.php" i en mappe under din www-root på din apache server. Brugernavn og adgangskode i eksemplet er test.

En .htaccess fortæller apache, at brugeren skal logge på. Filen skal være i den skuffe du vil beskytte. Adgangsbegrænsningen gælder også for undermapperne.


AuthName "TestArea! Go away"
AuthType Basic
AuthUserFile /var/www/html/intranet/adm/htpasswd
require valid-user



Du skal så have en htpasswd fil der hvor AuthUserFile peger. I dette tilfælde er det
"/var/www/html/intranet/adm/htpasswd". den kunne f.eks se sådan ud. Adgangskoden er krypteret. Brug denne fil til at starte med. brugernavn og adgangskode er "test".


test:$1$GxHBF5S8$28AESVMmYJtb5EncizECQ/



Det sidste du har brug for er et php-script til at administre "htpasswd" filen. Her er et lidt ældre script som jeg stadig bruger. gem den som htadmin.php i samme skuffe som de 2 .htaccess og htpasswd.



<?
// htpasswd-admin

function display_htpasswd()
{
$linie = file("htpasswd");
$antal = sizeof ($linie);
$t = 0;
?>
<table border="0" width="100%">
<tr>
<td width="*%" bgcolor="#909FEF"><p align="center"><small><font face="Verdana">htpasswd</font></small></td>
</tr></table>
<table border="0" width="100%">
<td width="40%" bgcolor="#A0AFFF"><p align="center"><small><font face="Verdana">Bruger</font></small></td>
<td width="40%" bgcolor="#A0AFFF"><p align="center"><small><font face="Verdana">Adgangskode</font></small></td>
<td width="10%" bgcolor="#A0AFFF"><p align="center"><small><font face="Verdana"></font></small></td>
<td width="10%" bgcolor="#A0AFFF"><p align="center"><small><font face="Verdana"></font></small></td>
</tr>
<?
while ($t<$antal)
{
$bruger = explode(":", $linie[$t]);
print("<tr>");
if($color == "#D8DBFE") {$color = "#E6ECFD";} else {$color = "#D8DBFE";}
print("<td bgcolor=\\"$color\\"><center><small><font face=\\"Verdana\\">$bruger[0]</font></small></center></td>");
print("<td bgcolor=\\"$color\\"><center><small><font face=\\"Verdana\\">$bruger[1]</font></small></center></td>");
print("<td bgcolor=\\"$color\\"><small><small><font face=\\"Verdana\\">");
?><p><a href="htadmin.php?PMode=ret&i=<?echo $t?>">ret</a></p><?
print("</font></small></small></td>");
print("<td bgcolor=\\"$color\\"><small><small><font face=\\"Verdana\\">");
?><p><a href="htadmin.php?PMode=slet&i=<?echo $t?>">slet</a></p><?
print("</font></small></small></td>");
print("</tr>");
$t++;
}
print("</table>");
display_form();
}
function display_ret()
{
global $i;
global $bruger;
$linie = file("htpasswd");
$antal = sizeof ($linie);
$newfile= fopen("htpasswd","r");
$t=0;
while ($t<=$antal){if($i==$t){$bruger=explode(":",$linie[$t]);}$t++;}
fclose($newfile);
}
function slet_user()
{
global $i;
$linie = file("htpasswd");
$antal = sizeof ($linie);
if ($antal==1){die ("<br/>Den sidste bruger kan ikke slettes");}
$newfile= fopen("htpasswd", "w");
$t=0;
while ($t<=$antal){if($i!=$t){fputs($newfile,$linie[$t]);}$t++;}
fclose($newfile);
$i='';
}
function add_user()
{
global $Navn;
global $Pass;
$Pass = crypt ($Pass);
$linie=$Navn.":".$Pass."\\n";
$newfile= fopen("htpasswd", "a");
fputs($newfile, $linie);
fclose($newfile);
$i='';
}
function ret_user()
{
global $Navn;
global $Pass;
global $i;
$Pass = crypt ($Pass);
$linie = file("htpasswd");
$antal = sizeof ($linie);
$newfile= fopen("htpasswd", "w");
$bruger=$Navn.":".$Pass."\\n";
$t=0;
while ($t<=$antal){if($i!=$t){fputs($newfile,$linie[$t]);}else{fputs($newfile,$bruger);}$t++;}
fclose($newfile);
$i='';
}
function display_form()
{
global $i;
global $bruger;
$Navn =$bruger[0];
$Pass =$bruger[1];
?>
<table border="0" width="100%"><tr><td width="*%" bgcolor="#F0FFEF"><p align="center"></td> </tr></table>
<p><small><small><font face="Times New Roman">
<FORM METHOD="POST" ACTION="htadmin.php">
<table border="0" width="100%">
<tr>
<td width="50%" bgcolor="#E8EBFE">Brugernavn</td><td width="*" bgcolor="#E8EBFE"><INPUT TYPE="text" NAME="Navn" VALUE="<?echo $Navn?>"></td>
<td width="50%" bgcolor="#E8EBFE">Adgangskode</td><td width="*" bgcolor="#E8EBFE"><INPUT TYPE="text" NAME="Pass"></td>
</tr>
<tr>
<INPUT TYPE="hidden" NAME="i" VALUE="<?echo $i?>">
<td width="50%"><input type="submit" value="gem"></td>
<td width="50%"></center><a href="htadmin.php">reset</a></td>
</tr>
</FORM>
</font></small></small>
<?
}
if (empty($PMode) and empty($i) and !empty($Navn)){add_user();}
if (empty($PMode) and !empty($i)){ret_user();}
if ($PMode=='ret'){display_ret();}
if ($PMode=='slet'){slet_user();}
$PMode='';
display_htpasswd();
?>




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 (9)

User
Bruger #903 @ 27.01.03 10:07
Okay.. Jeg ved ikke helt hvad jeg skal sige til denne artikel.

Du nævner ikke at brugeren skal huske at ændre htpasswd-filens 'mode'. Desuden er det ekstremt uforsvarligt at opbevare htpasswd-filen i en, fra browseren, tilgængelig mappe. Og man bør også komme punktum før navnet 'htpasswd' ('.htpasswd';).

Scriptet er okay, men burde have mere med om sikkerheden, for ikke at nævne at det burde have bedre sikkerhed selv.
User
Bruger #3004 @ 23.04.03 18:13
Først og fremmest kan jeg ikke få .htaccess til at godkende mit password (brugernavn: test password: test) ved at slette .htaccess og derefter indtaste en ny bruger, får jeg permission denied og fejl i linie 69, 70 og 71
User
Bruger #3849 @ 06.05.03 17:47
jeg kan ikke få htadmin.php til at virke
User
Bruger #4114 @ 22.06.03 11:51
Ikke nogen særlig grundig beskrivelse. Jeg har selv haft problemer med at få valideret mit password og desuden er der ikke beskrevet hvordan man tilføjer et nyt brugernavn og ikke mindst hvordan man krypterer sit password.
User
Bruger #1162 @ 16.07.03 15:03
syntes måske at du skulle forklare hva det kan bruges til ellers kunne du jo bare ha lavet det i en zip fil og smidt på din side og ha lavet et link der til
User
Bruger #1162 @ 16.07.03 15:04
syntes måske at du skulle forklare hva det kan bruges til ellers kunne du jo bare ha lavet det i en zip fil og smidt på din side og ha lavet et link der til
User
Bruger #1742 @ 31.07.03 14:26
hmm. burde du ikke gennem gå de forskellige ting lidt bedre?
Jeg har selv en del affaring med .htaccess ..
Jeg syntes du burde gennem gå, AuthType og AuthUserFile. specielt den sidste, da mange ikke ved at det er den locale sti man skal skrive. ellers virker det ikke.
og i password delen, hvordan man kryptere et password.
User
Bruger #4734 @ 11.04.04 21:38
hmm... har lidt problemer.. den accepterer ikke det krypterede password, men hvis jeg skriver mit ønskede password i htpasswd-filen, så accepterer den det... hvad er der galt?
User
Bruger #7603 @ 10.11.05 20:11
Føj for pokker dette er ikk en artikel
Du skal være logget ind for at skrive en kommentar.
t