Het 'probleem' (wat er eigenlijk geen is indien je je er maar van bewust bent) is dat het include statement in PHP standaard ook overweg kan met bestanden die op een andere server staan. En ik quote de eerste regels vanop
http://www.php.net/include:
Als de "URL fopen wrappers" zijn ingeschakeld (in de default configuratie is dit het gevel), dan kun je een file ook include()n met een URL, in plaats van een lokale path naam. Zie Remote files en fopen() voor meer informatie hierover.
Echter... veel mensen lezen de manual niet, of onvolledig, of veronderstellen dat ze wel voldoende weten wat een functie kan.
Het probleem kan dus opgelos worden door een setting te wijzigen, maar eigenlijk gaat het allemaal terug op een fundamenteel gegeven:
never trust user input.
De oplossing werd al vaker op dit forum gegeven, bij een url die eindigt op bijvoorbeeld "?page=contact" mag je niet zomaar gaan includen door die variabele te nemen en er een extensie achter te kleven. Want dan kan ik dus naar een andere server verwijzen en mijn code laten uitvoeren.
Het veiligste is een restrectieve lijst aan te maken met toegelaten waarden + controleren of de pagina op de huidige server staat.