.htaccess | veilig & gebruikersvriendelijk

Hierin probeer ik een beetje duidelijk te maken waarvoor je .htaccess kan gebruiken.

Gesponsorde koppelingen

Inhoudsopgave

  1. Wat kan een .htaccess-bestand nou?
  2. Toegang beperken dmv IP
  3. Toegang beperken dmv wachtwoord
  4. Gebruikersvriendelijke URLs
  5. Doorverbinden/redirecten
  6. PHP.ini instellingen veranderen
  7. Hotlinken
  8. Error document vervangen
  9. Tot slot

 

34 reacties op '.htaccess | veilig & gebruikersvriendelijk'

PHP hulp
PHP hulp
0 seconden vanaf nu
 
Gesponsorde koppelingen
Katjan
katjan
5 jaar geleden
 
0 +1 -0 -1
Quote:
Waar je eerst nog altijd een sloom database scriptje gebruikte om IPs te blokkeren, kan je nu gewoon .htaccess gebruiken.


ben ik het niet helemaal mee eens, want dan moet je met de hand steeds dat bestand bijhouden;)

verder nette tut, denk dat de beginnende webmaster er we wat aan heeft..!

~Huib
Arwin van der Velden
Arwin van der Velden
5 jaar geleden
 
0 +1 -0 -1
Handig!
Zero Dead
Zero Dead
5 jaar geleden
 
0 +1 -0 -1
@Huib, hoe vaak blokkeer jij een IP dan? Ik ga toch liever voor snelheid voor alle bezoekers, dan voor eigen gebruiksvriendelijkheid. Eens per maand een keer dat bestand openen en aanpassen, en klaar!
Klaasjan Boven
Klaasjan Boven
5 jaar geleden
 
0 +1 -0 -1
Prachtige tut niets op aan te merken
Zero Dead
Zero Dead
5 jaar geleden
 
0 +1 -0 -1
@ Klaasjan, bedankt!


5 jaar geleden
 
0 +1 -0 -1
Htaccess wizard

Verder kan je .htaccess natuurlijk ook via een PHP systeem gaan bewerken.
Majid Ahddin
Majid Ahddin
5 jaar geleden
 
0 +1 -0 -1
Als je een "sloom database scriptje" hebt om IPs te blokken ben je een ernstig slechte PHP programmeur! Je moet er absoluuut _niets_ van merken als er op IP wordt gecheckt. Als het meer dan 1duizendste seconde duurt, ben je inefficient bezig. Een HTACCESS is echter voor _veel_ meer dan ips blocken en ook nog voor veel meer dan in deze tut. Het is absoluut niet slim om in je htaccess te gaan knoeien met php apps. Als je iets fout doet kan je er nooit meer bij. Je FTP prog kan niet wijzigen en je php app ook niet meer want je krijgt een dikke 500 error. Dus moet je inloggen op je DirectAdmin (o.i.d.) account en dara gaan rotzooien.
OOK niet fijn.
Je hebt htaccess gewoon niet nodig... Niet voor inlog oplossing, niet voor ip blocken. Voor url rewriten is het handig en voor php flags ook, maar ik zou er nooit op vertrouwen. Je kan url rewriten ook in je 404 pagina zetten :) Moet je wel je 404 pagina in htaccess zetten. En dan is het ontzettend variabel zonder in een htaccess te knoeien
Katjan
katjan
5 jaar geleden
 
0 +1 -0 -1
@zerodead, nou, als je toch een ban script hebt, wil je toch wel graag als iemand wat doet, gewoon op een link klikken, en dattie dan gebanned is..
weet niet hoeveel.. denk 10 per maand ofzo?

~Huib
Legolas
Legolas
5 jaar geleden
 
0 +1 -0 -1
.htaccess is dus wel voor URL rewriten, rewriten via de 404 is namelijk juist fout.

Overigens een fout in je .htaccess geeft dan wel een 500, maar je FTP loopt niet over Apache dus daar kun je het dan even opschonen.


5 jaar geleden
 
0 +1 -0 -1
Quote:
Dus moet je inloggen op je DirectAdmin (o.i.d.) account en dara gaan rotzooien.
Hoe denk je dat DirectAdmin bestanden wijzigd?

Via een database is langzamer omdat je een apart systeem moet aanspreken; gegevens uit dit systeem moet fetchen en verwerken. Dit duurt kort maar als je nu 100 pageviews per minuut hebt en je geen prive server hebt komen er dus wel 100 aanvragen extra per minuut aan.
Je moet je database(server) gebruiken voor het echte database werk; niet voor 'het halve werk'

Quote:
Een HTACCESS is echter voor _veel_ meer dan ips blocken en ook nog voor veel meer dan in deze tut..............Je hebt htaccess gewoon niet nodig... Niet voor inlog oplossing, niet voor ip blocken. Voor url rewriten is het handig en voor php flags ook, maar ik zou er nooit op vertrouwen.

Zoals wat dan?
Jelmer rrrr
Jelmer rrrr
5 jaar geleden
 
0 +1 -0 -1
Je kan hem ook nog gebruiken voor instellingen (addType) en het versturen van passende antwoorden (indien browser accepts xhtml -> verstuur html als xhtml) en blokkeren naar mijn idee.

Maar om errorpagina's als mod_rewrite alternatief aan te geven? Baka! Iedere request moet eerst kijken of het bestand niet bestaat, wat het geval is, doorverwezen worden naar een eigen errorpagina (en hoe stel je die in? htaccess! haha! betrapt!) en die moet hem vervolgens weer doorverwijzen. En dan maar hopen dat er niet ergens een 404 header is verzonden, want dan zijn de rapen gaar. Dan ben je zeker de aandacht van je bezoeker kwijt. Mod_rewrite klinkt heel wat betrouwbaarder.

ZeRoDeaD: Mooie tutorial, erg fijn dat je doorverwijst naar andere artikelen hier, erg handig! Mijn complimenten!

PS: Naruto? Of was het Bleach. Ik gok op Naruto.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Lissy Pixel
Lissy Pixel
5 jaar geleden
 
0 +1 -0 -1
Dank je wel voor het delen hiervan ^_^
Bas Kreleger
Bas Kreleger
5 jaar geleden
 
0 +1 -0 -1
Quote:
@zerodead, nou, als je toch een ban script hebt, wil je toch wel graag als iemand wat doet, gewoon op een link klikken, en dattie dan gebanned is..
weet niet hoeveel.. denk 10 per maand ofzo?
Je kunt een .htaccess bestand natuurlijk ook bewerken d.m.v. een PHP applicatie zodat het niet handmatig hoeft.
Majid Ahddin
Majid Ahddin
5 jaar geleden
 
0 +1 -0 -1
Quote:
Hoe denk je dat DirectAdmin bestanden wijzigd?

Dat is helemaal niet boeiend. Hoe!? Huh wat doet dat er toe? Wat wel boeiend is, is dat jij, zonder DirectAdmin, _nooit_ meer je htaccess veranderd krijgt zonder veel te verliezen. Via FTP kan je je htaccess wel veranderen, maar alleen overschrijven, niet de huidige versie downloaden en bewerken. Je kan er namelijk niet bij met ftp. Je kan er ook niet meer bij met php, dus je moet met directadmin (als andere gebruiker dus) de fouten van je php app gaan bewerken.
Daar kan je natuurlijk voor kiezen, maar het is onnodig onveilig.


Quote:
En dan maar hopen dat er niet ergens een 404 header is verzonden, want dan zijn de rapen gaar. Dan ben je zeker de aandacht van je bezoeker kwijt.
Zie jij wel eens de code die een pagina terug krijgt? Welke code denk je dat je terug krijgt als je naar een pagina linkt die niet bestaat, maar wordt doorgeschoten door htaccess? Een 200? Nee hoor

Quote:
Je moet je database(server) gebruiken voor het echte database werk; niet voor 'het halve werk'
Noem eens een voorbeeldje van "het hele werk" dan? Een ip block systeempje lijkt me mooi php/db app voorbeeldje... Ze hebben DBs uitgevonden zodat je niet in je eigen bestanden hoeft te kloten. Het is daarnaast ook nog eens 'niet-slim' om je htaccess te chmodden naar 777. Geen enkel bestand moet 777 zijn maar dat terzijde.

@ Jelmer, ik snap je stukje niet... mod_rewrite is ook heel betrouwbaar, maar dan moet je wel een valid htaccess bestand hebben, die niet kapot is gemaakt door een of ander wazige ip-toevoeg-script. Ik zeg ook niet dat je htaccess moet doodschoppen en begraven, want het is gewoon een superhandig ding. Maar maak er 1 keer en verander het daarna nooit meer! Dat zeg ik. php_flags er in en error pagina's erin (zoals ik al zei). Niet om ips te blocken :S
En wat nou als je ineens je urls wil veranderen van domein.nl/cat/sub/id/ naar domein.nl/cat-sub-id.html ? Kan je (al) je htaccess bestand aan gaan passen... Nja niet fijn.
Maar je moet zelf weten natuurlijk :) Ik houd er niet van. Meer zal ik er dan ook niet over zeggen, voordat er mensen gaan huilen of slaan.



-- edit
P.S. niks slechts over dit artikel hoor :) Het is een net duidelijk artikel. Ik houd gewoon niet van gekke dingen in htaccess en zeker niet aan aanpassen in htaccess
PHP erik
PHP erik
5 jaar geleden
 
0 +1 -0 -1
Quote:
Via een database is langzamer omdat je een apart systeem moet aanspreken; gegevens uit dit systeem moet fetchen en verwerken. Dit duurt kort maar als je nu 100 pageviews per minuut hebt en je geen prive server hebt komen er dus wel 100 aanvragen extra per minuut aan.
Je moet je database(server) gebruiken voor het echte database werk; niet voor 'het halve werk'
Dit is dus gewoon theoretisch en evangelisch gelul.

Ten eerste is 100 pageviews per minuut echt helemaal niks, dat kan zelfs een Pentium I met een 56K modem nog wel aan.

Ten tweede, een connectie met je database maak je meestal toch wel binnen de pagina, dus de connectie is er al (1). Ook ben je al aan het praten met Apache dus die connectie is er ook al (2). Databasesituatie is dat je die een query stuurt, htaccess-situatie is dat je Apache een "query" stuurt (opdracht geeft) (3).
(1)(2)(3) --> it's the same

Verder ben ik erg benieuwd wat je onder 'het echte werk' verstaat. Topics en reacties in een database stoppen, is dat 'het echte werk'? Op zich niet, het is bijna relatieloze zooi. Je kunt dat ook in een tekstbestand kwijt en dan met een pointer wijzen naar de juiste plaats in je bestand. Want je zegt zelf, je moet je database gebruiken voor 'het echte werk'...

Ik zou ook altijd een database gebruiken om IPs te bannen, aangezien je hier grip op hebt. Het integreert soepel in je framework en je kunt er alles mee doen. Je kunt desnoods een databasekoppeling met htaccess maken als je daar een hoge dosis adrenaline van krijgt, maar om even argumentloos te beweren dat je hier geen database voor moet gebruiken; nee dat is niet correct.

Nice tutorial!

[o ja, ik zie ook geen handlers geloof ik]


5 jaar geleden
 
0 +1 -0 -1
Ik kan hier gewoon met mijn FTP programma mijn .htaccess bestanden bekijken, bewerken en opslaan.

Als je een fout maakt in je programma dan is dat gewoon erg dom.

Quote:
Zie jij wel eens de code die een pagina terug krijgt? Welke code denk je dat je terug krijgt als je naar een pagina linkt die niet bestaat, maar wordt doorgeschoten door htaccess? Een 200? Nee hoor


Je krijgt standaard een 404 tenzij je een alternatieve pagina opgeeft dan krijg je 200 tenzij je dus ergens een 404 weer verzend

Wat ik versta onder het echte werk? (Grote) hoeveelheden gegevens, niet een lijstje met IP adresjes. Als je nou ook een rede voor bannen erbij zou opslaan vind ik nog dat het enig nut heeft; maar een tabel met ??n kolom vind ik niet behoren tot het werk van een database.

Ander nadeel van bannen d.m.v. database is dat je niet PHP bestanden ook nog eens zou moeten gaan beveiligen.


------------------------------------------------------------------------------------

Verdere discussie lijkt me verstandiger via PM of forum


Ontopic weer: Het is een goede tutorial
Maurice B
Maurice B
5 jaar geleden
 
0 +1 -0 -1
hoe kan je met php een ip toevoegen en verwijderen in zo'n .htaccess bestand?
Zero Dead
Zero Dead
5 jaar geleden
 
0 +1 -0 -1
@ Jelmer, bedankt! Het is inderdaad Naruto:)

@ rudie d.,
Quote:
Via FTP kan je je htaccess wel veranderen, maar alleen overschrijven, niet de huidige versie downloaden en bewerken. Je kan er namelijk niet bij met ftp.


SmartFTP, http://www.smartftp.com/, hierin kan je .htaccess bestanden wel lezen, aanpassen, verzenden...

@PHPErik, jammer dat er geen snelheids test mogelijk is om te testen wat sneller is, omdat je niet kan beginnen met tellen voordat het .htaccess 'script' word geladen. Maar toch, een .htaccess bestand moet wel sneller zijn, omdat verbinding maken met een andere server, die op zijn eigen harde schijf kijkt, slomer gaat dan alleen op je eigen harde schijf te kijken.(Met database: Webserver - netwerk - databaseserver - hardschijf - netwerk - webserver || Zonder database: webserver - hardeschijf - webserver) Het verschil zal(met een goede codering) zeer klein zijn, maar op een minder goede server, zal dit verschil snel groot lijken. ps, bedankt!

@ Webmakerij, ook bedankt!:)

@ Maurice, Lees deze pagina eens: http://www.phphulp.nl/php/tutorials/10/439/992/ kijk dan naar de code, zie de overeenkomsten, en je kan zo een IP toevoegen;)
PHP erik
PHP erik
5 jaar geleden
 
0 +1 -0 -1
Quote:
Wat ik versta onder het echte werk? (Grote) hoeveelheden gegevens, niet een lijstje met IP adresjes. Als je nou ook een rede voor bannen erbij zou opslaan vind ik nog dat het enig nut heeft; maar een tabel met ??n kolom vind ik niet behoren tot het werk van een database.
Ik vind het heel leuk dat je dat vindt, maar het is nergens op gebaseerd. Snap je hoe databaes werken, qua opslag van bitjes en bytejes en het query-en hiervan? Dus de indeling van binaire bestanden en pointers en dergelijke? Zo ja, dan snap je ook de irrelevantie van je eigen "argument", of ik moet eigenlijk zeggen van je eigen mening.

Flexibiliteit is 100 maal belangrijker dan het verschil tussen een miljardste en een hondermiljoenste van een seconde. Plus dat je eigenlijk altijd toch wel enige documentatie wil hebben in de vorm van een datum, tijd en eventueel een reden.

Als je "PHP bestanden" (meervoud) moet gaan beveiligen dan is er iets mis met de structuur van je website c.q. framework.

Ik vind dit zelf overigens niet een heel irrelevante plek om te discussieren aangezien het ontopic is. Dat de tutorial inhoudelijk goed is daar zijn we het geloof ik wel over eens, maar het is voor mensen ook relevant wat nuttige toepassingen zijn en wat niet en dan moet je de discussie niet afsluiten nadat er weer een mening is gegeven i.p.v. feiten op tafel zijn gegooid, dan misleidt je mensen die de tutorial gaan toepassen.

En voor degene die het vroeg: htaccess bestanden kun je gewoon met fopen() en bijbehorende functies bewerken.
PHP erik
PHP erik
5 jaar geleden
 
0 +1 -0 -1
Quote:
@PHPErik, jammer dat er geen snelheids test mogelijk is om te testen wat sneller is, omdat je niet kan beginnen met tellen voordat het .htaccess 'script' word geladen. Maar toch, een .htaccess bestand moet wel sneller zijn, omdat verbinding maken met een andere server, die op zijn eigen harde schijf kijkt, slomer gaat dan alleen op je eigen harde schijf te kijken.(Met database: Webserver - netwerk - databaseserver - hardschijf - netwerk - webserver || Zonder database: webserver - hardeschijf - webserver) Het verschil zal(met een goede codering) zeer klein zijn, maar op een minder goede server, zal dit verschil snel groot lijken. ps, bedankt!
Als je er van uitgaat dat de database op een andere server draait dan is htaccess sowieso sneller. Nee ik moet het anders zeggen, htaccess bannen is sowieso sneller dan welke database dan ook. Maar het verschil is zo ontzettend klein dat het niet relevant is. Zelfs al zou je een website hebben met 1000 bezoekers per seconde dan is het verschil tussen bannen via database en bannen via htaccess praktisch onmeetbaar. Alleen zou ik dan wel even cachen.


5 jaar geleden
 
0 +1 -0 -1
Quote:
Als je "PHP bestanden" (meervoud) moet gaan beveiligen dan is er iets mis met de structuur van je website c.q. framework.
Ik heb het over bestanden dus ook afbeeldingen, pdf bestanden, enz.......

Quote:
Snap je hoe databaes werken, qua opslag van bitjes en bytejes en het query-en hiervan? Dus de indeling van binaire bestanden en pointers en dergelijke? Zo ja, dan snap je ook de irrelevantie van je eigen "argument", of ik moet eigenlijk zeggen van je eigen mening.

Bitjes en bytjes hebben weinig te maken met waarom ik vind dat je je database niet moet gebruiken voor alleen het opslaan van een lijstje.

Quote:
Plus dat je eigenlijk altijd toch wel enige documentatie wil hebben in de vorm van een datum, tijd en eventueel een reden.

Dan vind ik een database nut hebben voor het bannen van IP's

SQL_in_de_praktijk:
Een database of gegevensbank is een hoeveelheid met elkaar verbandhoudende gegevens .........

Als je in een database alleen een lijstje van IP adresjes opslaat heeft het geen verband met de rest, (als je het anders bekijkt: met de rest van je website) maar bij ALLEEN een lijstje met IP nummers heeft geen verband met de rest.

Voorbeeldje: Een absentiesysteem op school slaat steeds alleen de naam van de afwezige leerlingen op in een database. Dan vindt IK hier een database niet op z'n plaats, als er nou bij werd opgeslagen wanneer, waarom.... dan heeft een database zin omdat er dan enig zins realties ontstaan.
PHP hulp
PHP hulp
0 seconden vanaf nu
 

Gesponsorde koppelingen
Zero Dead
Zero Dead
5 jaar geleden
 
0 +1 -0 -1
@ PHPerik, zodra je 1000 hits per seconde hebt, gaat het niet alleen meer om de snelheid. Het draait dan ook om de load van de server(s). Als ik dan ipv 1, 2 queries uitvoer per pagina, word dat een behoorlijk verschil. Elke query die dan word gelanceert, zorgt voor een kleine load, die dus elkker opstapelt. Als je dan 1000 * 1 query per seconde uitvoert, vraagt dit al behoorlijk wat van je database. Dit word dus zo verdubbelt als je er ook nog een IP ban query bijzet. Nu heb ik het nog over pagina's met standaart maar 1 query, maar als je bijv. kijkt naar een statistieken pagina, dan gebruik je al veel meer queries, en word dit verschil dus kleiner. Maar let wel op, 15 kleine queries kunnen behoorlijk wat van de server vragen, dan telt dus elke query mee.

Edit:
Maar dit gaat nu wel heel ver van de topic vandaan, dus misschien beter om voort te zetten via prive berichten.
Legolas
Legolas
5 jaar geleden
 
0 +1 -0 -1
Even een klein dingetje: wat lang duurt is vooral verbinding maken met de database, gooi er dus gewoon blij een persistent connectie op als je het te veel wordt...
K i p
K i p
5 jaar geleden
 
0 +1 -0 -1
En hoe laat je een jpg als php parsen?

Misschien nog een leuke pagina erbij ;-)

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
AddType application/x-httpd-php .php .htm .html .alles .jemoeder .exe

of
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
RewriteRule plaatje.jpg plaatje.php
Maarten
Maarten
5 jaar geleden
 
0 +1 -0 -1
Vrede tutorial (h)
Jacco Engel
Jacco Engel
5 jaar geleden
 
0 +1 -0 -1
Ik hebvandaag zelf nog een simpel nut van htaccess ontdekt. Als je met txt files werkt (of in mijn geval .ini files) kun je in de map waar je ini files staan de volgende htaccess plaatsen.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
deny from all
allow from localhost


Op deze manier word het , behalve met je eigen scripts, onmogelijk om files te lezen. Ben nog aan het nadenken over iets waarmee je plaatjes kan beveiligen en dan gebruikt zeker dit om direct bladeren naar de volledige image te blokeren.
Ron Kraaijkamp
Ron Kraaijkamp
5 jaar geleden
 
0 +1 -0 -1
Hi NulDood en anderen,

ik heb deze en andere tuts over .htaccess en .htpasswd gelezen.

Waar ik mee zit is dat e.e.a. niet werkt. Ik kan niet ingelogt raken. Ik gebruik een htpasswd site(s) om het password te genereren. Elke keer dat ik dat doe, is het password anders. Dat verbaast me, want hoe moet de Apache server dat passwd terug rekenen naar wat ik intyp.
Zit de tijd o.i.d. erin verwerkt?

CU, Ron
- SanThe -
- SanThe -
5 jaar geleden
 
0 +1 -0 -1
Het commando is:
htpasswd /path_naar_htpasswd_file/.htpasswd username
Zero Dead
Zero Dead
5 jaar geleden
 
0 +1 -0 -1
@Ron,

Krijg je wel een inlog schermpje te zien als je wilt inloggen, en werkt een inlogscherm als van PHPMyAdmin wel?

Dat het wachtwoord altijd anders is zou niks uit moeten maken, dit is nl altijd/meestal zo, misschien kan een ' '(spatie) of enter erachter een verschil maken, maar ik zou gewoon met een .htpasswd met slechts 1 voorbeeld account proberen, voorbeeld
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
t:klK3ycFddegSk

Hiermee zou je met de gebruikersnaam 't' en met het wachtwoord 't' moeten kunnen inloggen.
Ron Kraaijkamp
Ron Kraaijkamp
5 jaar geleden
 
0 +1 -0 -1
Ik kan niet inloggen op de server. De webruimte is gehost bij one.com
Ik krijg wel een inlog box.

Ik gebruik een webpagina (zoals er veel zijn) op met de username en password een entry voor de .htpasswd file te genereren, die dan steeds verschillend zijn (het encrypte passwd dan).

Anders moet ik het de provider maar eens vragen.
.....

Ik heb het de provider gevraagd (via chat sessie). Ze blijken een eigen pagina te hebben om de .htaccess en .htpasswd te genereren.
Dat werkt nu.

Maar, als ik eenmaal ben ingelogt geweest, dan kan ik er de volgende keer weer zo op. Dat wil ik niet. Is daar een setting voor?

Hmmm, daar ben ikook uit. Ik moet natuurlijk wel de browser afsluiten, anders blijft de sessie bestaan.

Allen bedankt voor de support.
Cu, Ron
Niek Kasius
Niek Kasius
5 jaar geleden
 
0 +1 -0 -1
ik wil mijn eigen ip en dat van de eigenaar van de site niet laten mee tellen in statistieken.
Maar als ik het goed begrijp gaat dat niet op met htaccess, want dan kan ik volgens mij de statistieken ook niet meer bekijken en waarschijnlijk ook niet meer in de datadase komen. of zie ik dat verkeerd ?
Woxx
Woxx
4 jaar geleden
 
0 +1 -0 -1
Handig script, gebruik ik nu voor ongewenste bezoekers.

Om te reageren heb je een account nodig en je moet ingelogd zijn.

  • Details
  • Zero Dead
    Door:
    Zero Dead
  • 5 jaar geleden
  • 3.472 x bekeken
  • Labels
  • Geen tags toegevoegd.
Get Adobe Flash player