Config.inc veilig?
Is een config.inc.php bestandje waar je mysqlverbinding in wordt gemaakt wel veilig? Stel dat iemand anders dat nu op zijn site include heeft die toch mooi toegang tot je database. Of ligt het anders?
Groeten, Wessel Bruinsma
Laat je config kijken of hij wel vanaf de goede pagina word geopend,
Noem het niet gewoon standaard config.php
ik denk dat je dat ertegen zou kunnen doen,
maar ik weet eigenlijk iemand exern bestanden kan includen
boven aan mijn config.inc.php zet, dan moet het opgelost zijn. Toch?
http://site/config.inc.php wilt includen (met fopen of what ever) geeft je webserver een lege pagina terug, wat er staan alleen maar variabelen in (denk ik).
Hoe wilt een externe site je bestand includen? Als die gewoon maar als er meerdere site op 1 server met hetzelfde IP zitten, dan zou ik t ook niet weten.
Bijvoorbeeld:
Nu controleer je gewoon in config.php of dat overeenkomt. Zo ja -> Dan uitvoeren, zo nee dan niet.
Meestal is het echter wel veilig, omdat 9 van de 10 keer de server het niet toestaat externe files te includen.
Gewoon buiten de webroot zetten, dan kan niemand er via de browser bijkomen. Je hebt dan FTP-toegang nodig om er bij te kunnen komen. Maar ja, wanneer iemand FTP-toegang heeft, dan heb je hem/haar toch al volledige toegang tot je systeem gegeven. Dan is het dus geen enkel probleem, of je hebt nog veel grotere problemen dan alleen je config-file...
Is het mogelijk om plaatjes te preloaden? Ik werk namelijk aan een chatbox. (xmlhttp) Je merk er niks van als deze tekst herlaad, maar de plaatjes moet het steeds opnieuw laden. Hoogstens irritant dus. Is het mogelijk met een slim stukje javascript ofzo om de plaatjes te preloaden, niet met een balkje ofzo, maar als je de pagina opent dat het het dan al laad.
Als het niet duidelijk is moet je het maar even zeggen.
Google knows (almost) everything :)
Over dat config.inc.php he, kun je bovenin niet dit doen:
config.inc.php:
index.php:
Over dat config.inc.php he, kun je bovenin niet dit doen:
config.inc.php:
Code (php)
index.php:
WesselB schreef op 18.10.2007 12:56:
Ik heb het opgelost met het controleren van de SERVER_NAME.
En als ik mijn Apache nou zo instel, dat mijn servernaam precies hetzelfde is als jouw servernaam? Dan is het weer lek.
@Santhe
Kan je dat dan zo instellen? Dat is toch niet mogelijk. Ik dacht dat de $_SERVER variablen altijd hetzelfde blijven en niet instelbaar waren =S
Mijn God wat een hoop nutteloze reacties. Denk eens na. Als iemand jouw config.php kan includen vanaf een externe site dan kan hij ook gewoon via de browser jouw hele site downloaden. Je hoort gewoon je includes buiten de document root te zetten, zoals Frank zegt. Lees bijvoorbeeld maar de Zend Certification Study Guide. Zo'n ding met define() is alleen handig om zeker te weten dat het niet direct wordt aangeroepen, maar dat maakt bij config files helemaal niet uit.
Dat de meeste oplossingen voor problemen uitermate eenvoudig zijn, dat willen een hoop mensen niet geloven. Daar kunnen jij en ik niets aan veranderen, het zij zo.
Ik heb index.php binnen de webroot staan en dat was het dan. Verder nog wat css, js en images, maar daar is niks spannends aan en heeft niks met PHP te maken.
Beveiliging is niet zo moeilijk, je moet gewoon heel simpel denken. Geef bezoekers toegang tot datgene wat ze nodig hebben en verder helemaal niks. Vele programmeurs denken precies andersom, die gaan zaken blokkeren wat men niet nodig heeft. Het is alleen lullig dat jij nooit weet wat men niet nodig heeft, dat is gewoon te veel.
1) Trek alle rechten in voor alle soorten gebruikers/rollen
2) Ken per rol die rechten toe die absoluut onmisbaar zijn en waar geen beter alternatief mogelijk is. En vergeet niet dat public ook een rol is.
De kans dat je nu wordt gehackt is al zeker een factor 100 kleiner geworden.
Ik heb zelf ook werkelijk alleen m'n index.php in de document root. Verder alleen een .htaccess met een mod rewrite en include_path. Verder niets.
Ja OK, jullie hebben gelijk. Ik denk veel te moeilijk. Dus als ik alle beveiligde bestanden buiten de webroot zet, dan is alles opgelost. Bedankt voor jullie hulp! thx
Nee, je zet alles wat een gebruiker niet nodig heeft buiten de webroot. ALLES!