________________________________________________________________
This FAQ has been written by TRON, you can contact me via webmastercity@qualitysign.nl. This FAQ may be copied freely, but please don't alter the FAQ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
De wondere wereld van .htaccess
Omdat er de laatste tijd veel vragen over .htaccess kwamen, heb ik een kleine doch interessante FAQ geschreven over het gebruik van .htaccess-bestanden al dan niet in combinatie met PHP.
Wat is .htaccess?
Ten eerste werken .htaccess-bestanden op een Apache-webserver.
.htaccess-bestanden zorgen ervoor dat je per directory kan configureren welke instellingen je voor een bepaalde directory wilt hebben. Je kan bijvoorbeeld instellen dat alleen bepaalde IP-adressen een bepaalde directory mogen bezoeken, je kan ook instellen welke IP-adressen er juist NIET in mogen komen.
Ook is het heel goed mogelijk om toegang te geven aan een selecte groep gebruikers. Dit door middel van een gebruikersnaam en wachtwoord. In samenwerking met de IP-adressen kan je hiermee een sterke beveiliging maken.
Het is ook mogelijk om bepaalde gebruikers het recht te ontnemen - of juist te geven - om gebruik te maken van GET en POST.
Hoe kan ik gebruik maken van .htaccess?
Sommige (gratis) hosts laten .htaccess-bestanden toe om te functioneren, lang niet alle providers doen dat. Als jouw host het wel ondersteunt, dan kan je gebruik maken van .htaccess-bestanden, simpelweg door: kladblok te openen, daar je script in te zetten, deze te uploaden naar de goede directory, de juiste rechten geven (775, oid), et voila.
Wil je het op je eigen server ook toe laten? Dan moet je de httpd.conf aanpassen. Deze kan je vinden voor Apache 1.x en Apache 2.0 respectievelijk in: c:\Program Files\Apache\conf EN c:\Program Files\Apache Group\Apache2\conf\
Zoek naar
| Code: | 1 2 3 4
|
# AllowOverride controls what directives may be placed in .htaccess files.
# It can be "All", "None", or any combination of the keywords:
# Options FileInfo AuthConfig Limit
#
AllowOverride None
|
|
|
en verander None in All
Herstart dan je Apache-server.
Nu is het mogelijk om gebruik te maken van de .htaccess-bestanden en haar mogelijkheden.
Wanneer gebruik je .htaccess-bestanden?
Als je geen toegang hebt tot het hoofd-configuratiebestand: httpd.conf. Heb je wel toegang tot dit bestand, dan kan het nog handig zijn om met .htaccess-bestanden te werken. Je hebt een duidelijker overzicht, en je kan bepaalde gebruikers de bestanden ook laten beheren - al dan niet via bijv. PHP.
Waarom zou je geen .htaccess-bestanden gebruiken?
Het scheelt in snelheid als AllowOverride op None staat. Apache zoekt namelijk elke keer elke directory door naar .htaccess-bestanden als men surft op je pagina. Ook worden de .htaccess-bestanden elke keer geladen als je je zelf in een directory begeeft waar een .htaccess bestand inzit.
Hoe beveilig je een bepaalde directory? (bijv. een members-area)
Open kladblok en gebruik bijv. het volgende script:
| Code: | 1 2 3 4
|
AuthType Basic
AuthName "Password Required"
AuthUserFile /www/passwords/.htpasswd
AuthGroupFile /www/passwords/.htgroup
Require Group members root
|
|
|
Een nadere verklaring:
| Code: |
Zorgt er voor dat men een gebruikersnaam/password moeten intikken.
| Code: | |
AuthName "Password Required"
|
|
|
De tekst die je te lezen krijgt.
| Code: | |
AuthUserFile /www/passwords/.htpasswd
|
|
|
de plek van het bestand waar de gebruikersnamen en wachtwoorden inzitten (!!)
| Code: | |
AuthGroupFile /www/passwords/.htgroup
|
|
|
de plek van het bestand waar de gebruikers ingedeeld zijn in groepen (!!)
| Code: | |
Require Group members root
|
|
|
Welke mensen hebben toegang? Juist: de mensen in de groep members, en de mensen in de groep root.
Als je
| Code: |
gebruikt, dan hebben alle users die in het .htpasswd-bestand staan toegang.
Het is ook mogelijk om IP-adressen en domeinnamen te weren of juist toe te laten:
| Code: | 1 2 3 4
|
order allow,deny
deny from 123.45.6.7
deny from 012.34.5.
deny from .a2000.nl
allow from all
|
|
|
IP-adres 123.45.6.7 heeft geen toegang.
IP-adressen 012.34.5.0 - 012.34.5.9 hebben ook geen toegang.
Alle domeinen eindigend op .a2000.nl hebben ook geen toegang.
Hoe ziet .htpasswd eruit?
user:SHA-codering
OF
user:MD5-codering:
| Code: | 1 2 3
|
TRON:62uwesdg4HCZ6
Nebu:16E9Ogtt9ZjOE
dirk:84yKNwT8tKkW2
|
|
|
of
| Code: | 1 2
|
TRON:$apr1$Xp0.....$u7SoHxgS0WkVhFtoDoV0x/
Nebu:$apr1$Dr0.....$p3ELGU.F4e3npYzqfOb0v0
dirk:$apr1$8s0.....$sLU3dzOdNN.hQqQAcR3Fm.
|
|
|
Geloof het of niet, alle wachtwoord zijn gelijk aan elkaar, namelijk webmastercity. Er komen steeds andere waarden uit, onafhankelijke van de gebruikersnaam. Waarom dit? Voor de veiligheid.
Het is ook wel mogelijk om de wachtwoorden plain (onopgemaakt/ongecodeerd) op te slaan in een .htpasswd-bestand, maar dit is flink af te raden.
Hoe ziet .htgroup eruit?
groepnaam: member1 member2 member3
| Code: | 1
|
members: Darkie paulwong Dirk
root: TRON Nebu MdH
|
|
|
Maakt het uit hoe ik de .ht*-bestanden noem?
Nee eigenlijk niet. Kijk een in httpd.conf bij
| Code: |
Daar kan je zien dat je zelf mag bepalen hoe het .htacces-bestand mag gaan heten.
PAS OP:
Laat de bestanden WEL met .ht beginnen. Doe je dat niet, dan moet je de volgende code aanpassen in httpd.conf.
| Code: | 1 2 3
|
<Files ~ "^.ht">
Order allow,deny
Deny from all
</Files>
|
|
|
Spreek voor zich lijkt me. Doe je dit niet? Dan kan men de betreffende bestanden opvragen en bekijken. Onveilig dus.
Pas je de httpd.conf aan, herstart dan de Apache-server.
Hoe maak je zo'n password-codering?
Er bestaan genoeg online-passwordcreators, waarvan er hier 1: http://www.euronet.nl/~arnow/htpasswd
Ook heeft Apache in de bin-directory een programmaatje genaamd htpasswd. Daarmee kan je zelfs .htpasswd-bestanden creeeren.:
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
|
Usage:
htpasswd [-cmdpsD] wachtwoordbestand gebruikersnaam
htpasswd -b[cmdpsD] wachtwoordbestand gebruikersnaam wachtwoord
htpasswd -n[mdps] gebruikersnaam
htpasswd -nb[mdps] gebruikersnaam wachtwoord
-c Maak een nieuw bestand.
-n Update het bestand niet, maar laat de codering gewoon zien..
-m Forceer MD5-codering van het wachtwoord (standaard).
-d Forceer CRYPT-codering van het wachtwoord.
-p Codeer het wachtwoord niet. Normale tekst.
-s Forceer SHA-codering van het wachtwoord.
-b Gebruik het wachtwoord welke ingegeven wordt vanaf de commandline.
-D Verwijder gebruiker
Op Windows, Netware en TFP-systemen wordt de optie '-m' standaard al gebruikt.
Op alle andere systemen, zal de optie '-p' waarschijnlijk niet werken.
|
|
|
Kan je dit systeem ook combineren met PHP?
Ja. Je pagina moet dan een header sturen.
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14
|
<?PHP
if(!isset($_SERVER['PHP_AUTH_USER']))
{
Header("WWW-Authenticate: Basic realm="STUKJE TEKST"");
Header("HTTP/1.0 401 Unauthorized");
echo "Tekst om te sturen als de gebruiker op Annuleren klikt.\n";
exit;
}
else
{
echo "Hallo ".$_SERVER['PHP_AUTH_USER']."<P>";
echo "Je gebruikte ".$_SERVER['PHP_AUTH_PW']." als je password.<P>";
}
?>
|
|
|
En het leuke hiervan is dat je het mooi kan combineren met een database. Laat de ingevoerde waarden door een database-query lopen, et voila, je kan inloggen via de HTTP-authentication manier.
Hot-linking tegen gaan
Wat is dit? Met hot-linking wordt bedoeld dat men vanaf een andere site bijvoorbeeld een plaatje van weer een andere server gebruikt. Wil jij tegengaan dat mensen plaatjes (oid) van jouw server gebruiken om op hun eigen server te gebruiken? Zo ja, zet dan het onderstaande in een .htaccess-bestand voor de directories waar het voor geldt. Zet het in de 'hoofd'-directory om het voor alle opvolgende directories te laten gelden.
| Code: | 1 2 3 4
|
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://your_domain.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.your_domain.com/.*$ [NC]
RewriteRule .*.(gif|GIF|jpg|JPG)$ http://your_server.com/bad.gif [R]
|
|
|
Verander your_domain.com in je eigen domein. En verander http://your_server.com/bad.gif om het weer te geven plaatje bij hot-linking aan te geven.
Het nut? Bandbreedte wordt niet meer van jou gebruikt.
Error-pagina's
Deze kan je zelf aangeven en aanpassen naar eigen believen. Zet het volgende in je .htaccess-bestand.
| Code: | 1 2 3 4 5
|
ErrorDocument 401 errors/verkeerd_ingelogd.html
ErrorDocument 403 errors/geen_toegang.html
ErrorDocument 404 errors/pagina_niet_gevonden.html
ErrorDocument 405 errors/methode_niet_toegelaten.html
ErrorDocument 407 errors/proxy_authenticatie_nodig.html
ErrorDocument 500 errors/server_error.html
|
|
|
Het nut? Eigenlijk is het niet echt nodig. Maar het kan leuk zijn om bepaalde dingen te laten loggen op zo'n moment. Of mensen naar andere pagina's door te sturen, of wat dan ook. Het staat in ieder geval een stuk professioneler en klantvriendelijker.
Het maakt niet uit naar welke pagina je iemand toe stuurt. Zoals je kunt zien maak ik hier gebruik van een directory genaamd
errors. De errornummers komen in overeen met waar de errors voor staan en dus - in dit geval - met de bestandsnamen. Dit is echter niet nodig.
Bronnen
http://httpd.apache.org/docs/howto/htaccess.html
http://httpd.apache.org/docs-2.0/howto/htaccess.html
Google
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.html
__________________________________________________________________
This FAQ has been written by TRON, you can contact me via webmastercity@qualitysign.nl. This FAQ may be copied freely, but please don't alter the FAQ
¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯¯
Pagina : 1
© Copyright by WebsiteKeuring.be