Computergenie.nl    

Computergenie.nl
  Registreer!
  Registreer
Homepage
Home
Top 10
Top 10
Forum
Forum
Prijsindex
Prijsindex
Nieuws
Nieuws
Downloads
Downloads
Hulp & Uitleg
Hulp & Uitleg
Uitgebreid zoeken
 
  Zoeken •  Gebruikerslijst  •  Gebruikersgroepen   •  Registreer  •  Profiel  •  Log in om je privť berichten te bekijken  •  Ben je al lid?  Log in! 
Ben je al lid?  Log in!
Kies uw onderwerp:
Computer-Cafť
Knowledge Base
Hardware
Software
Internet & netwerken
Games
Scripten & programmeren
Digitale fotografie & video
Multimedia
GSM & mobile
Sitecheck & links
OfficiŽle mededelingen
Feedback
ISL Light
Aanbiedingen
Markt-plaats
Hulp & Uitleg

Sponsors:

Cloud VPS

Relaties:

PC Beveiliger
Forum » Knowledge Base » Basis van .htaccess
Basis van .htaccess

Nieuw onderwerpNieuw antwoord
vosManz Bericht Geplaatst op 02-05-2008 Reageer met quote
Technische man
Intro

Een lange tijd geleden heb ik een nederlandse beginnershandleiding over htaccess gemaakt. Deze kwam ik onlangs tegen, en mogelijk heeft iemand hier er iets aan :)

Als basis hiervoor heb ik toen deze website gebruikt: http://www.javascriptkit.com/howto/htaccess.shtml

- .htaccess heeft GEEN bestandsnaam, alleen de .htaccess extensie.
- .htaccess bestanden beinvloeden de map waar ze in geplaatst worden, en eventuele sub-mappen, als daar geen apart .htaccess bestand in staat. Als er in een sub-map wel een .htaccess bestand staan, worden de instellingen uit dat .htaccess bestand toegepast.
- Je moet .htaccess bestanden uploaden als ASCII.
- .htaccess werkt alleen op apache-webservers.

Inhoud

- Error Documenten
- Password beveiliging
- SSI toestaan via .htaccess
- Gebruikers via IP weigeren
- Standaardpagina weizigen
- Redirecten / doorverwijzen
- Bekijken van .htaccess tegengaan
- MIME types toevoegen
- Hot links van je afbeeldingen tegengaan
- Map lijstweergave uitzetten
- Foutcode's

Error documenten

Om een Errordocument in te stellen moet je het volgende in je .htaccess bestand zetten:
Code:
ErrorDocument code /map/bestand.ext


Waarbij:
code: De code van de fout die zich heeft voorgedaan (onderaan staat een lijst met foutcode's).
map: De map waar je error bestanden in staan.
bestand: Het bestand voor de desbetreffende fout.
ext: De extensie van het error bestand.

Voorbeeld:
Onderstaande code geeft de pagina 'errors/nietgevonden.html' weer als een pagina niet bestaat (foutcode 404)
Code:
ErrorDocument 404 /errors/nietgevonden.html



Password beveiliging

Om dit te doen moet je ook een password bestand aanmaken, meestal wordt .htpasswd gebruikt.

.htaccess bestand:
Code:
AuthUserFile /map/naar/je/.htpasswd
AuthGroupFile /dev/null
AuthName Naam
AuthType Basic

require valid-user


Waarbij:
/map/naar/je/.htpasswd: De url naar het .htpasswd bestand op je SERVER, dit is dus (meestal) niet de url die je intypt op internet.
Naam: Een zelf gekozen naam of beschrijving.

.htpasswd bestand:
Het .htpasswd bestand ziet er als volgt uit:
Code:
a:b
iemand:y4E7Ep8e7EYV
iemandanders:y4E7Ep8e7EYV


Waarbij:
a: De gebruikersnaam.
b: Het Encrypted password.

Passwords kun je encrypten op deze pagina: http://www.4webhelp.net/us/password.php
Elke gebruikersnaam en password moeten op een nieuwe regel in je .htpasswd bestand komen.

SSI toestaan via .htaccess

Code:
AddType text/html .shtml
AddHandler server-parsed .html
AddHandler server-parsed .shtml
Options Indexes FollowSymLinks Includes


Waarbij:
AddType: De extensie die je wil uitvoeren.
Addhandler: De extensie die op de server uitgevoerd moet worden

Als je al je bestanden als .html hebt opgeslagen en geen zin hebt om ze te wijzigen naar .shtml dan kun je bovenstaande code gebruiken. Heb je alles al als .shtml dan kun je de regel 'AddHandler server-parsed .html' weglaten.

Gebruikers via IP weigeren

Code:
order allow,deny
deny from 123.45.6.7
deny from 12.34.5.
allow from all


Waarbij:
deny from 123.45.6.7: Het geweigerde IP adres, hier 123.45.6.7.
deny from 12.34.5.: De geweigerde IP range, hier 012.34.5.*.
allow from all: Alle overige IP adressen hebben wel toegang.

Je kan 'allow from all' veranderen in 'deny from all' om alle gebruikers te weigeren.
Je kan het IP adres ook vervangen door een hostnaam.

Standaardpagina wijzigen

Normaal is index.html of default.html (of een andere extensie) de standaardpagina.
Als je dit wil wijzigen moet je het volgende toevoegen in je .htaccess bestand.
Code:
DirectoryIndex bestandsnaam.ext


Waarbij:
bestandsnaam.ext: Het bestand dat je als standaardpagina wil gebruiken.

Je kan ook deze code gebruiken:
Code:
DirectoryIndex bestandsnaam.ext index.cgi index.pl default.htm


Als nu het bestand 'bestandsnaam.ext' niet gevonden wordt is index.cgi de standaardpagina. Als deze ook niet gevonden wordt is index.pl de standaardpagina. enz...

Redirecten / doorverwijzen

Bestaat een pagina niet meer, en wil je de gebruikers naar de nieuwe locatie sturen, dan kun je het volgende gebruiken:
Code:
Redirect /oude_map/oud_bestand.html http://pagina.com/nieuwe_map/nieuw_bestand.html


Waarbij:
/oude_map/oud_bestand.html: De locatie waar het bestand eerst stond.
http://pagina.com/nieuwe_map/nieuw_bestand.html: De nieuwe locatie van het bestand.

Bekijken van .htaccess tegengaan

Om je instellingen te beveiligen kun je het volgende in je .htaccess zetten:
Code:
<Files .htaccess>
order allow,deny
deny from all
</Files>



Onder de meeste server-instellingen krijgt de gebruiker dan een 403 error pagina.
Je kan ook je .htaccess bestand chmodden naar 644 (RW-R--R--).

MIME types toevoegen

Als je server sommige bestandstypes niet toestaat, kun je het volgende toevoegen om ze toch te gebruiken:
Code:
AddType application/x-shockwave-flash swf


Waarbij:
application/x-shockwave-flash: Het MIME type van het bestand.
swf: De extensie van het bestand.

Wil je ervoor zorgen dat mensen bijvoorbeeld mp3 bestanden kunnen downloaden, en ze niet afgespeeld worden als je er op klikt, dan moet je het volgende toevoegen:
Code:
AddType application/octet-stream mp3

Een lijst met verschillende MIME types en extensies is hier te vinden

Hot links van je afbeeldingen tegengaan

Voor dit onderdeel moet je server 'mod_rewrite' ondersteunen.

Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?jedomein.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ - [F]


Waarbij:
jedomein.com: Je domeinnaam.

Deze code zorgt ervoor dat alle afbeeldingen met als extensie .gif en .jpg die niet op www.jedomein.com worden geopend een rood kruisje krijgen.

Wil je in plaats van het rode kruisje een afbeelding naar keuze, dan moet je deze code gebruiken:

Code:
RewriteEngine on
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?jedomein.com/.*$ [NC]
RewriteRule \.(gif|jpg)$ http://www.jedomein.com/fout.gif [R,L]


Waarbij:
jedomein.com: Je domeinnaam.
http://www.jedomein.com/fout.gif: De afbeelding die de gebruiker te zien krijgt als de pagina niet op www.jedomein.com geopend wordt.

TIP: Je kan deze code ook gebruiken voor andere bestandstypen. Vervang dan (gif|jpg) door bijvoorbeeld (gif|jpg|exe), zo kan er ook niemand je .exe bestanden downloaden vanaf een andere site.

Map lijstweergave uitzetten

Wil je niet dat mensen zien wat je in je map hebt staan? Gebruik dan de volgende code in je .htaccess bestand:
Code:
IndexIgnore *


Wil je dat alleen bepaalde extensies niet worden weergegeven? Gebruik dan deze code:
Code:
IndexIgnore *.gif *.jpg


Nu worden alle bestanden die een .gif en .jpg extensie hebben niet weergegeven, maar alle overige bestanden wel.

Heeft je host de lijstweergave uitgeschakeld, en wil je deze juist wel gebruiken? Voeg dan deze code toe in je .htaccess bestand:
Code:
Options +Indexes


Foutcode's

Gebruik deze code's als je Error documenten wilt gebruiken.
Quote:
Successful Client Requests
200 OK
201 Created
202 Accepted
203 Non-Authorative Information
204 No Content
205 Reset Content
206 Partial Content

Client Request Redirected
300 Multiple Choices
301 Moved Permanently
302 Moved Temporarily
303 See Other
304 Not Modified
305 Use Proxy

Client Request Errors
400 Bad Request
401 Authorization Required
402 Payment Required (not used yet)
403 Forbidden
404 Not Found
405 Method Not Allowed
406 Not Acceptable (encoding)
407 Proxy Authentication Required
408 Request Timed Out
409 Conflicting Request
410 Gone
411 Content Length Required
412 Precondition Failed
413 Request Entity Too Long
414 Request URI Too Long
415 Unsupported Media Type

Server Errors
500 Internal Server Error
501 Not Implemented
502 Bad Gateway
503 Service Unavailable
504 Gateway Timeout
505 HTTP Version Not Supported


Meer informatie over .htacces is te vinden op de pagina van apache.




::: vosManz :::
renevanh Bericht Geplaatst op 02-05-2008 Reageer met quote
Beheerder
Met .htaccess kun je overigens nog veel en veel meer. Zo kun je de draaiende PHP configuratie aanpassen (bijvoorbeeld de gevaarlijke global variables uitzetten als je hosting dat niet heeft gedaan...), enz enz.



Keyboard not found, press F1 to continue...
vosManz Bericht Geplaatst op 03-05-2008 Reageer met quote
Technische man
Klopt, .htaccess is erg uitgebreid. Dit is enkel de basis van enkele veel gebruikte opties zoals het beveiligen van mappen, en het tegengaan van hotlinken. Maar er zijn inderdaad nog heel veel meer mogelijkheden.

Als iemand vragen heeft over een stuk dat hier niet besproken is, kun je dat natuurlijk altijd vragen. Een antwoord kan dan mooi opgenomen worden in het stuk.




::: vosManz :::
PC_Beveiliger Bericht Geplaatst op 13-10-2009 Reageer met quote
Gevorderd lid
Vertel eens wat meer over die 'gevaarlijke global variables'



Image
vosManz Bericht Geplaatst op 16-10-2009 Reageer met quote
Technische man
Het gaat om 'register globals' van PHP.

Als de optie register_globals AAN staat worden alle $_GET, $_POST, $_ENV, $_SERVER en $_COOKIE variabelen automatisch omgezet naar globale variabelen binnen het script.

Een voorbeeldje:
Ik open de pagina: http://www.computergenie.nl/index.php?param=true

In een PHP script heeft dit de volgende resultaten:

Met register_globals AAN:
Code:
var_dump( $param ); // Geeft string 'true'
var_dump( $_GET['param'] ); // Geeft string 'true'


Met register_globals UIT:
Code:
var_dump( $param ); // Geeft NULL of undefined
var_dump( $_GET['param'] ); // Geeft string 'true'

Zoals je hier ziet geeft $param in het eerste voorbeeld hetzelfde aan als $_GET['param']. Dat is een beveiligings risico, omdat je op die manier via de URL (of cookie's, post enz..) de variabelen in een script kan beÔnvloeden. Als die variabelen bijvoorbeeld zonder controle in een SQL query gebruikt worden, wat overigens ook een risico is, kan hiermee aan SQL injection gedaan worden.

Dit is slechts een voorbeeld, je kan er nog meer onveilige dingen mee doen, wat dus niet de bedoeling is. Als je het met $_GET of $_POST ophaalt heb je in ieder geval zelf in de hand waar de variabele vandaan komt. Overigens is het dan nog aan te raden de variabele te controleren op juiste invoer, zeker bij gebruik in een SQL query.

Zie:
http://nl.php.net/manual/en/ini.core.php#ini.register-globals
http://nl.php.net/manual/en/faq.using.php#faq.register-globals

Je kan het via een .htaccess uitschakelen met de volgende code:
Code:
php_flag register_globals off




::: vosManz :::
PC_Beveiliger Bericht Geplaatst op 16-10-2009 Reageer met quote
Gevorderd lid
vosManz schreef:
Je kan het via een .htaccess uitschakelen met de volgende code:
Code:
php_flag register_globals off


Dus als ik die code in mijn .htaccess zet is dat een stuk veiliger?

En moet die .htacces dan in de hoofdmap of een specifieke submap?




Image
vosManz Bericht Geplaatst op 19-10-2009 Reageer met quote
Technische man
Het kan ook op server niveau al uitgeschakeld zijn. In dat geval hoef je het niet nog eens in een .htaccess te zetten. Veel hosts hebben het al uit staan. Je kan dat controleren door in een php bestand de functie phpinfo() aan te roepen. Zoek in de pagina die je dan krijgt op 'register_globals' en je weet het :)

Als het aan staat, kun je het uitschakelen door die regel in je .htaccess in je hoofdmap te zetten. Het werkt dan voor alle submappen, tenzij je het in een submap juist weer aan zet natuurlijk.




::: vosManz :::
Nieuw onderwerpNieuw antwoord   


Forum » Knowledge Base » Basis van .htaccess

Powered by Cloud VPS - High Availability Cloud Servers