Toegang SQL db vanuit PHP

Status
Niet open voor verdere reacties.

Asteroid999

Gebruiker
Lid geworden
20 jan 2009
Berichten
19
Momenteel ben ik een website aan het bouwen die ik online wil zetten bij een host.

Normaal gesproken zet ik websites online bij een andere host, maar hier gaat het om een update van een oude website voor iemand die bij dezelfde host wil blijven. Ik wil de content van de website in een MySQLdb zetten, en het er dan met PHP uit laten halen. Dit heb ik al eerder gedaan bij die andere host, dat werkt allemaal prima. Dat doe ik als volgt:

Ik maak een clientuser aan voor de database, gebruikersnaam client, ww client. Let op, deze user geef ik alleen leesrechten. De connectie in PHP ziet er dan als volgt uit:

PHP:
<?php
	$host = "localhost";
	$username = "client";
	$pass = "client";
	$db_name = "databasenaam";
	@mysql_connect($host, $username, $pass) or die("Connection with MySQL failed");
	@mysql_select_db($db_name) or die("Database could not be loaded");
?>

Het probleem is nu, dat ik bij de host waar ik deze website wil hosten, geen gebruikers aan kan maken. Er is één vaste gebruiker (die ik wil gebruiken om de website te updaten dmv een eigengemaakt CMS), maar hiervan ga ik de gebruikersnaam en ww uiteraard niet hard in de code zetten. Heeft iemand een veilige oplossing voor dit probleem (misschien is hoe ik het wil doen al niet heel veilig, alhoewel de user alleen leesrechten heeft)? Of moet ik aan de host vragen of die een clientuser voor me aan wil maken?

Bvd. =)
 
Wat is precies het probleem? Is het dat de gebruiker van de website het wachtwoord kan zien? Want dat kun je eigenlijk nauwelijks voorkomen; iemand die de source kan zien/editen, heeft sowieso alle mogelijke rechten die zijn account toestaat.

De enige veilige oplossing als je niet wil dat de eigenaar van de website dingen uithaalt, is een extra useraccount met alleen leesrechten.
 
Wat is precies het probleem? Is het dat de gebruiker van de website het wachtwoord kan zien? Want dat kun je eigenlijk nauwelijks voorkomen; iemand die de source kan zien/editen, heeft sowieso alle mogelijke rechten die zijn account toestaat.

De enige veilige oplossing als je niet wil dat de eigenaar van de website dingen uithaalt, is een extra useraccount met alleen leesrechten.
Ik ben niet bang dat de eigenaar van de website gekke dingen uithaalt, die wordt namelijk de beheerder van de website (mbv van mijn content management systeem), en die heeft geen baat bij het veroorzaken van problemen.

Mijn probleem is, dat het voor mijn gevoel niet veilig is het wachtwoord hard in een PHP bestand te zetten. Mijn tweede vraag is dan eigenlijk: is het voor een buitenstaander echt onmogelijk toegang te krijgen tot de code van een php-bestand? Als dat het geval is, is er namelijk helemaal geen probleem, en ik vind ik het niet erg om een username/ww in een php-bestand te zetten.
 
Okay, ik heb wat onderzoek gedaan, en ben tot de conclusie gekomen dat .php bestanden in theorie niet ongecompiled gedownload kunnen worden vanaf een remote connectie, en dus best een wachtwoord mogen bevatten.

Moet je maar net weten, zo leer je er elke dag weer wat bij...
 
De enige manier die mij zo te binnen schiet is het overbelasten van de server waardoor deze de PHP-code letterlijk zal laten zien wanneer je een pagina aanroept.

Over het algemeen kun je gewoon een PHP-bestand met configuratiegegevens op je space zetten. Iemand die hem opvraagt zal toch een lege pagina (en broncode) zien wanneer er alleen maar PHP in staat :)

Wat je wellicht kunt doen is het configbestand buiten de publieke map zetten.

Stel dat /root/www.jesite.nl/www/ het publieke gedeelte bevat.
Dan zou je het bestand in /root/www.jesite.nl/ kunnen zetten en alsnog via PHP kunnen benaderen.
 
Gevoelige informatie moet je inderdaad _altijd_ en _per definitie_ buiten de ROOT zetten, om de reden die ThaDevil loopt. Het risico bestaat altijd dat de server per ongeluk gewoon plain text uitspuugt, zonder de PHP eerst te parsen.

Dan zijn je wachtwoorden veilig.
 
...
Wat je wellicht kunt doen is het configbestand buiten de publieke map zetten.

Stel dat /root/www.jesite.nl/www/ het publieke gedeelte bevat.
Dan zou je het bestand in /root/www.jesite.nl/ kunnen zetten en alsnog via PHP kunnen benaderen.
Ah, dat vind ik een mooie optie. Nu een map aangemaakt met:
------------------
|- config
|-- db_connect.php
|- www
|-- index.php
|-- includes
|--- *andere include files*
------------------

En dan in index.php:
PHP:
include "../config/db_connect.php";

Wat me trouwens opvalt, als ik het include path voor andere include files zet, en daarna pas db_connect include:
PHP:
set_include_path("includes");
include "../config/db_connect.php";

Dan zou je verwachten dat er gezocht wordt in www/config/..., omdat www boven includes zit. Toch werkt dit zo (op m'n localhost iig)...

Maar dit wordt een beetje offtopic.

Bedankt Frats en Tha Devil!
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan