-5
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)
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.
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
jeg kan ikke få htadmin.php til at virke
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.
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
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
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.
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?
Føj for pokker dette er ikk en artikel
Du skal være
logget ind for at skrive en kommentar.