Als je een bestand van een externe server include, wordt alleen de geparste-info geïnclude. Dus niet 't script. Anders zou ik bijvoorbeeld een pagina kunnen maken waarmee ik alle tabellen van jou MySQL database drop. Het enige wat ik dan hoeft te doen om dat werkend te krijgen is de bestandsnaam waar jij je connectie in maakt te weten. Die include ik, er wordt verbinding gemaakt, hopla!
Dat wilde ik juist voorkomen, dat een 'gebruiker' óók de connectie naar de mysql dbase weet doordat die php bestand in dezelfde map staat.
Daarom wilde ik dus het bestand wat verbinding maakt met de database op een server gooien, en deze vanuit localhost aanroepen. Zo krijgt de gebruiker niet de kans om de gegevens van de database op te zoeken.
En andere dingen die de gebruiker niet in de source mag zien wil ik ook door een php-bestand op een andere server laten uitvoeren, echter moet ik dus wel variabelen van en naar elkaar kunnen communiceren, daarom dacht ik aan $_SESSIONs.
Hoe kan ik dit het beste oplossen volgens jullie dan?
PHP kan je niet in de source zien.. tenzij je een show_source() script maakt waarbij een gebruiker zelf in mag typen welke pagina hij/zij de bron van wil bekijken.
Je geeft een gebruiker niet zomaar toegang tot jou database, hij/zij moet daarvoor op jouw localhost zijn bestanden zetten om de databaseconnectie succesvol te includen.
ALs jij je database connectie vanaf finaq.nl werkend zou kunnen includen op je localhostscript, zou dat niet veilig zijn. Dan kan ik die dus ook vanaf mijn computer includen en overal mee rommelen... Oftewel, als je PHP variabele enzo wilt gebruiken vanuit een include, moeten het 'hoofdbestand' en het bestand dat je include op dezelfde server staan. Anders werkt het dus niet.
Het is al opgelost maar toch even een argument waarom.
De gebruiker krijgt de script op zijn computer. Daarom heeft ie dus ook toegang tot de PHP bestanden, en daarom wil ik niet dat ie direct vanuit die bestanden een verbinding maakt met de databaseserver.
De oplossing overigens was door de geinclude pagina een andere extensie te geven (.inc) zodat deze niet geparsed wordt door de externe server.
En effe Zend eroverheen laten wandelen
Thomas - 08/11/2006 16:59 (laatste wijziging 08/11/2006 17:00)
Moderator
Citaat:
De gebruiker krijgt de script op zijn computer
Sorry, maar WTF?
Dat is dus een dikke misvatting. De gebruiker krijgt de uitvoer van een script "op zijn computer".
Het is juist super-ONveilig om bestanden met gevoelige informatie geen PHP-extensie te geven. Als deze namelijk in de webdirectory staat, dan kun je deze rechtstreeks aanroepen. Een .inc bestand wordt niet aan de serverzijde behandeld, tenzij jij aangeeft dat bestanden met deze extensie een speciale behandeling nodig hebben.
In jouw geval lijkt het mij het verstandigste om deze "gevoelige" bestanden helemaal buiten je webdirectory te houden, want je hebt er blijkbaar weinig kaas van gegeten.
EDIT: Je bent natuurlijk ook gezien als PHP om wat voor reden dan ook niet meer actief is op je server - dan kun je deze bestanden ook (de niet-verwerkte scripts) rechtstreeks opvragen.