veiligheid connectie database
mysql_connect('localhost', 'mysql_user', 'mysql_password');
Ik heb deze waarden opgeslagen in een PHP document zodat ik ze niet elke keer hoef in te voeren op elke pagina waar ik connectie wil maken met database. Maar ik vraag me af of dat niet gevaarlijk is, want dan zou iedere gebruiker (indien ze de naam te weten komen van mijn php database connectie PHP document) deze php document kunnen gebruiken om mijn omgeving te vervuilen enz.
Is dit ook zo en zo ja hoe is dit dan op te lossen?
Een PHP bestand wordt zeg maar uitgevoerd en de uitkomst daarvan getoond op het scherm. De PHP code zelf is nooit te zien
Waarschijnlijk is het daarom zo belangrijk om uploads te beveiligen en het niet mogelijk te maken voor gebruikers om PHP documenten te uploaden.
Gewijzigd op 01/01/1970 01:00:00 door Carel
Verder plaats je dit soort bestandjes altijd buiten je webroot. Op die manier zijn ze alleen vanaf de server zelf en niet van buitenaf te benaderen. Ze kunnen dus ook niet meer geinclude worden in een extern PHP bestand.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Is dat eerste punt is dus niet erg positief en het tweede buiten webroot bedoel je buiten public_html. Hoe maak ik dan connectie in mijn public_html met de database als ik het niet meer kan includen?
Wellicht dat ik je verschil tussen intern en extern niet zo goed begrijp....
In dit geval zou db_config.php in een map 'include' buiten je public_html map staan...
Het is nu onmogelijk voor iemand vanaf een externe server om dit bestandje te benaderen. Hij heeft enkel toegang tot bestanden en mappen die in jouw webroot (public_html) staan.
mysqli_connect('localhost', 'mysql_user', 'mysql_password');
Ik denk omdat mijn gegevens (wanneer ik inlog) gekoppeld zijn aan de bestanden die ik upload waardoor mijn php bestanden uniek zijn....
klopt dat of ben ik helemaal gek aan het denken...
Hipska mag ik met die vernieuwde thingie wel mijn database connectie script in public_html zetten?
Gewijzigd op 01/01/1970 01:00:00 door Carel
als je php script in public_html een bestand van daarbuiten wil includen, en het mag niet, dan krijg je een error. Zo weet je of het kan of niet.
(normaal lukt dat altijd)
Maar nog liever zou ik met de object georiënteerde methode werken:
Meer informatie kun je vinden in deze MySQLi tutorial.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Hoe weet mijn php documenten dat mijn php scripts wel toegestaan zijn om buiten public_html connectie te maken met de db_config.php
Ik denk omdat mijn gegevens (wanneer ik inlog) gekoppeld zijn aan de bestanden die ik upload waardoor mijn php bestanden uniek zijn....
klopt dat of ben ik helemaal gek aan het denken...
toch raad ik je zeer sterk aan om mysqli te gebruiken, het moet niet volgens de OOP stijl zijn, maar dan kan je overal waar je mysql_... gebruikte vervangen door mysqli_...
verbinden met de DB doe je zo:
mysqli_connect('host', 'user', 'password', 'database');
Quote:
Ik denk omdat mijn gegevens (wanneer ik inlog) gekoppeld zijn aan de bestanden die ik upload waardoor mijn php bestanden uniek zijn....
Nee, dat komt omdat de bestanden zich binnen hetzelfde filesystem bevinden, ze staan immers op dezelfde server.
Met include kun je alle bestanden includen zolang ze zich binnen hetzelfde filesystem bevinden en zolang je genoeg rechten hebt op de map waarin ze staan...
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
Klinkt soms een beetje tegenstrijdig. Eerst moet ik db_connectie buiten public_html zetten voor veiligheid. Vervolgens oproepen in mijn scripts die in public_html staan. MAAR dan wordt hier weer gezegd zolang ze zich binnen hetzelfde filesystem bevinden en zolang je genoeg rechten hebt op de map waarin ze staan. Het 1 spreekt het ander tegen. En dan snap ik nog steeds niet de veiligheidsoplossing want dan kan als iemand ooit achter de locatie met naam php script achterkomt het toch nog steeds op vragen.....Ik bedoel hier worden vaak scripts getoont waarin een databaseconnectie geinclude wordt (en met die gegeven kan je er toch wel in komen?)
Sorry dat ik jullie zo bezig hou maar ik begrijp nog steeds niet de logica. Ik zal die mysql veranderen in mysqli als dat beter is.
En nog iets waarom erbuiten zetten als je ook voor mappen kan cmodden?
Quote:
Nee hoor, alle bestanden en mappen op de server behoren tot het bestandssysteem (filesystem). PHP files die in public_html staan, kunnen in principe in alle mappen op de server komen zolang er genoeg rechten op die map verleend zijn.Het 1 spreekt het ander tegen.
Van buitenaf, dus als ik jouw website via internet benader, kan ik alleen bestanden en mappen in je public_html map benaderen. Daarbuiten kan ik nooit komen.
Kortom, includen vanaf dezelfde server gaat wel maar benaderen van buitenaf niet.
ps. Het veranderen naar mysqli is niet enkel het aanpassen van de functienamen. Er zitten nog wel wat andere subtiele verschillen tussen, daar moet je dus wel eerst even naar kijken.
Dus als ze een php script in 1 van mijn mappen kunnen plaatsen omdat ik daar bijv cmod daar 777 heb staan kunnen ze wel mijn database benaderen. Aan mij de taak om ervoor te zorgen dat gebruikers en anderen geen php documenten kunnen uploaden naar mijn public_html dus....
ik zal nog eens kijken naar die mysqli dan overigens.
En geloof me, daar is al genoeg schade aan te richten, ook al heb je geen toegang tot de database.
Gewijzigd op 01/01/1970 01:00:00 door Joren de Wit
En nog 1 ding. Je zei "Kortom, includen vanaf dezelfde server gaat wel maar benaderen van buitenaf niet." Wat bedoel je met buitenaf? Is dat buiten mijn public_html bij de mensen zelf of zie buitenaf als in mijn public_html.
Als het bij de mensen zelf is en niet binnen public_html begrijp ik het wel.
Bedankt
Jouw webroot staat niet bij mensen zelf, ze benaderen jouw website alleen via het internet. Standaard zullen ze dan in de webroot (jouw public_html) uitkomen en benaderen ze jouw server dus van buitenaf.
Welke chmod je die map geeft maakt niet zo heel veel uit, 755 zou prima zijn...