Ik ben een beginner met php, alles liep aardig lekker, maar nu is gisteren een website van mij gehacked.
Kunnen jullie misschien mijn script eens bekijken? En me misschien een beetje op de goede weg helpen...?
mogen alle bestanden die in de map pages staan en met inc.php eindigen ge-include worden?
Ik heb niet getest of dit werkt, maar is het niet mogelijk om dit te doen?
include 'pages/../settings.inc.php'; als page=../settings zou zijn.
in dat geval zou ik nog even extra checken op de . in de string.
Je leest het volgens mij verkeerd. Hipska bedoelt dat ../settings ertussen zetten de beveiligingsfout kan zijn. Met ../ ga je een map naar boven op de server (bijvoorbeeld van /httpdocs/sitenaam/pages/ naar /httpdocs/sitenaam/). Met een beetje logisch inzicht en geluk (of pech, hoe je het bekijkt), kan je dus bij ?page= in de adresbalk invullen: ?page=../admin/settings. Daarmee zoekt jouw script de pagina httpdocs/sitenaam/admin/settings.inc.php op, en als die niet goed afgeschermd is kan daar bijvoorbeeld een wachtwoord opstaan.
Als je maar een aantal pagina's hebt die je mag bekijken, kan je beter direct opgeven welke toegestaan zijn met een switch(). Ik heb daar in een ver verleden een tutorial over geschreven, maar die nog wel bruikbaar is. Wat wel goed is in jouw script, is dat je geen externe bestanden kan invoeren (bijvoorbeeld ?page=http://www.anderewebsite.nl/kwaadscript, waarmee kwaadscript.inc.php als bestand zou worden uitgevoerd op jouw server).