Htaccess
Wat ik graag wil is de directory blokkeren waar mijn include bestanden staan /include
In deze directory staan meerdere bestanden die via Ajax opgeroepen worden , nu wil ik dat de bezoeker doorverwezen wordt naar index in de root directory als ze naar de url www.mijndomein.nl/include gaan
Weet iemand hoe ik dit doe met htaccess
Voor de duidelijkheid het moet nog wel toegankelijk blijven voor Ajax requests ,
Ik wil graag hetzelfde voor de directory /scripts waar verschillende JavaScript bestanden staan
Alvast bedankt voor eventuele reacties
http://www.askapache.com/htaccess/using-filesmatch-and-files-in-htaccess.html
Persoonlijk vind ik dat je het dan wel nodeloos ingewikkeld maakt door publieke en privé bestanden door elkaar te zetten in één directory. Ik zou toch overwegen om de publieke (ajax) uit de include directory te halen.
Gewijzigd op 09/07/2014 21:13:23 door Frank Nietbelangrijk
Maar moet ik dan alle files die in deze directory staan apart opgeven met filematch , of kan ik ook heel deze directory blokkeren ?
Gewijzigd op 09/07/2014 21:33:59 door Frank Nietbelangrijk
Zo is mij vanmiddag namelijk wel verteld, in deze post
Dan sluit je de hele map af, en als iemand dan naar (een bestand in) de map wil gaan, krijgt deze persoon een 403 (unauthorized access) error te zien.
Gewijzigd op 09/07/2014 21:44:02 door Kevin Zegikniet
@kevin met deny for all worden deze bestanden ook geblokkeerd voor Ajax requests dus dit is helaas geen optie
Beveiligen met sessies?
Ik wil namelijk dat niemand naar deze directory kan gaan ook niet als er een sessie actief is
Bij de bron aanpakken, de bestanden beveiligen met een sessie!
Kun je de map met include bestanden niet in een privé-map zetten (dus een niveau hoger dan de document root)?
Vraag 2)
Of beter gezegd tip 2...
Zet gewoon een index.php bestand in de map "include" met als inhoud:
De scripts zelf beveiligen is een ander verhaal. Deze worden door het client-side AJAX opgevraagd, hierdoor is het plaatsen ervan buiten de webroot geen oplossing.
Gewijzigd op 10/07/2014 01:19:51 door - Ariën -
Maar hoe moet ik het zien met sessies ?
Gewijzigd op 10/07/2014 01:28:03 door - Ariën -
Maar hoe moet ik het zien met sessies ?
Wat wil je nu dan eigenlijk bereiken? Als je niet wil dat mensen je bestanden rechtstreeks aanroepen, dan moet je ze buiten de public directory zetten. Of heb je daar geen toegang toe?
Ozzie, jouw tip 2 is GEEN beveiliging. Ik hoop dat dat duidelijk is?
Maar wel een antwoord op deze vraag:
>> nu wil ik dat de bezoeker doorverwezen wordt naar index in de root directory als ze naar de url www.mijndomein.nl/include gaan
Toch?
Ozzie PHP op 10/07/2014 01:46:12:
Wat wil je nu dan eigenlijk bereiken? Als je niet wil dat mensen je bestanden rechtstreeks aanroepen, dan moet je ze buiten de public directory zetten. Of heb je daar geen toegang toe?
Precies die tip had ik al helemaal aan het begin gegeven.
Toevoeging op 10/07/2014 01:56:40:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
|
|- [private] --> hier alle php scripts waarop niet 'geland' mag worden en dus ook jouw includes
|
|- [www] --> de root van je website! (vanaf hier publiek toegankelijk)
|
|- [css] --> hier je css bestanden
|
|- [javascript] --> hier je javascript bestanden
|
|- [images] --> hier je plaatjes
|
|- [ajax] --> hier je ajax
|
|- index.php --> je homepage!
|- [private] --> hier alle php scripts waarop niet 'geland' mag worden en dus ook jouw includes
|
|- [www] --> de root van je website! (vanaf hier publiek toegankelijk)
|
|- [css] --> hier je css bestanden
|
|- [javascript] --> hier je javascript bestanden
|
|- [images] --> hier je plaatjes
|
|- [ajax] --> hier je ajax
|
|- index.php --> je homepage!
Yup, maar er wordt niet echt op ingegaan. Ik snap ook niet helemaal wat hij wil, en waarom. Als het enkel erom gaat dat men niet mijnsite.nl/include/ kan aanroepen, dan werkt zo'n index file prima.
Om te beginnen moet je dan, zoals Frank aangaf, de PHP-includes buiten de root opslaan en de Ajax-bestanden binnen de root, bijvoorbeeld in een map /ajax/. So far, so good, dat was eerder al uitgelegd.
Het blokkeren van directe aanroepen van Ajax-bestanden is andere koek. Je kunt dat niet waterdicht maken, omdat ze open moeten staan voor HTTP-requests. Wel kun je ze redelijk dichttimmeren met sessies, tokens en wat HTTP-headers.
De php bestanden dus buiten de root (www)
Maar benader ik die dan, ik dacht namelijk dat alleen bestanden benaderd kunnen worden binnen de root
Als je met AJAX een bestand uitvoert, moet deze wel bereikbaar zijn in de webroot.