Ibland vill man lägga upp saker på nätet som ingen annan ska se.
Det kanske är känsliga dokument, upphovsrättsskyddade filer eller bara något guilty pleasure.
Kort sagt: saker man själv vill komma åt, men inte någon annan.
På en Apache-server kan man göra detta med hjälp av en .htaccess-fil
(detta trick fungerar inte med iis eller nginx, där finns det istället andra lösningar)
Linux filnamn fungerar lite annorlunda än i Windows.
Börjar ett filnamn med en punkt i Linux betyder det att filen är dold. I Windows kan man också dölja filer, men det görs på ett annat sätt.
Htaccessfilen heter kort och gott .htaccess och punkten i början gör att webbläsare inte kan se den.
När man besöker en sajt kommer Apacheservern se om det finns en .htaccess-fil i katalogen man besöker – och finns det kommer Apache utföra instruktionerna i filen.
En av de saker man kan göra är att lösenordsskydda katalogen.
Htaccessfilen kan t.ex. se ut så här:
AuthUserFile "/home/www/secret/.htpasswd"
AuthGroupFile /dev/null
AuthName "Password required"
AuthType Basic
require valid-user
AuthType Basic
Betyder att det är enkel inloggning, d.v.s. att det kommer ett popup-fönster med ett meddelande och fält för användarnamn och lösenord som man ska fylla i.
AuthName “Password required”
Är meddelandet i popup-fönstret. Man kan skriva vad man vill innanför citationstecknen.
require valid-user
Betyder att man måste fylla i giltigt användarnamn och lösenord för att få åtkomst till katalogen.
AuthGroupFile /dev/null
Betyder att gruppinloggning INTE är tillåten. Man behöver inte bry sig om gruppinloggning, mer än att det inte är tillåtet.
AuthUserFile “/home/www/secret/.htpasswd”
Är sökvägen till filen där lösenordet är sparat.
Observera att filen inte behöver heta .htpasswd – men det är vad den brukar heta.
Sökvägen kan vara lite klurig att räkna ut. Enklaste sättet att ta reda på sökvägen är att skriva ett litet php-script.
Antingen:
<?php
echo $_SERVER['DOCUMENT_ROOT'];
?>
eller:
<?php
echo getcwd();
?>
Spar något av skripten i en textfil som heter t.ex. path.php, ladda upp filen och surfa till filen; den borde visa något i stil med:
/home/www
Det är sökvägen till hemsidans rot.
Om man har sidan http://acme.com och roten /home/www betyder det att http://acme.com/secret är /home/www/secret.
Det är alltså www-katalogen som är själva hemsidan.
Har man tillgång till hemkatalogen /home kan man skapa en katalog under /home bredvid /home/www, t.ex. /home/password – en sådan katalog är inte åtkomlig från nätet och är därför säker.
Själva .htpasswd-filen består av en rad per användare, t.ex:
nisse:$apr1$YF4f6YKn$wNFXJNvwgzKphIF3J85QM/
Här har vi användaren nisse, ett kolon och lösenordet “hashat”.
Det betyder att lösenordet inte är i klartext.
När man sedan surfar till den lösenordsskyddade katalogen och fyller i löseordet kommer apache-servern att “hasha” lösenordet och om hashen stämmer med lösenordsfilen kommer man åt katalogen.
Enklaste sättet att få hashen är att googla htpassword generator.
Början på hashen talar om vilken sorts hash det är.
Mitt exempel ovan börjar med $apr1$ som betyder att det är hashat med MD5-algoritmen.
Om man har en Linuxterminal kan man även använda bash-kommandot:
openssl passwd -apr1 password
När man väl loggat in är man inloggad tills man stänger webbläsaren. Det räcker alltså inte att bara stänga fliken för att man ska bli utloggad.