• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

SQL-Daten sicher einbinden

stvn

Neues Mitglied
Moin.

Ich wollte mal fragen, ob das eigentlich unsicher is, wenn ich nur 'ne config.php hab, die ich "überall" einbinde und in der ich die Verbindungsdaten für die Datenbank hinterlege? :)

config.php
PHP:
<?php
	// Datenbank + Zugangsdaten festlegen
	$db = mysql_connect('localhost','benutzer','passwort');
	mysql_select_db('datenbank');

	// Datenbankdaten überprüfen
	if (!$db) {
		die('Verbindung nicht möglich : ' . mysql_error());
	}
?>

Wenn der Code generell bescheiden ist, dann bitte ich auch um Hinweise, Tipps etc. :)

Danke!
stvn
 
Zuletzt bearbeitet:
Hallo,
die frage kommt letzte zeit relativ oft :O).
nee, ist nicht schlimm und brauchst auch nicht verschlüsseln oder so :O).

Cheffchen
 
Hallo,

is ok.

brauchst nichts ändern ist ok so.
ach doch, könntest die die() abfrage glaube gleich beim connect machen (einkürzen)
PHP:
<?php 
    // Datenbank + Zugangsdaten festlegen 
    $db = mysql_connect('localhost','benutzer','passwort') or die('Verbindung nicht möglich : ' . mysql_error());
    mysql_select_db('datenbank');  
?>

Cheffchen
 
Die Einstellungen zur Fehlerbehandlung sollte auf dem Produktivsystem sollten richtig eingestellt sein (display_errors = off), damit im Stacktrace die Verbindungsdaten nicht auftauchen.

Ansonsten ist es auch möglich die Daten aus der httpd.conf durchzureichen:

Code:
SetEnv MYSQL_USERNAME root
SetEnv MYSQL_PASSWORD root
SetEnv MYSQL_DBNAME test
SetEnv MYSQL_HOSTNAME localhost
SetEnv MYSQL_PORT 3306

PHP:
<?php
$myDb = new PDO(
     sprintf(
        'mysql:host=%s;port=%d;dbname=%s',
        getenv('MYSQL_HOSTNAME'),
        getenv('MYSQL_PORT'),
        getenv('MYSQL_DBNAME')
    ),
    getenv('MYSQL_USERNAME'),
    getenv('MYSQL_PASSWORD')
);

Oder auch in der php.ini (mit Hilfe von [PATH=]/[HOST=]) oder httpd.conf mysql.default_port, mysql.default_socket, mysql.default_host usw. festlegen. Wobei hier PDO-MySQL diese Daten nicht automatisch frisst (man muss sie mit ini_set() durchreichen); MySQLi hingeben schon.
 
Meiner Meinung nach empfiehlt es sich generell auch nicht
mysql_error();
auszugeben.

Muss doch der Benutzer nicht wissen, was nicht ging ;)
 
Ich schätze die meisten SQL Errors sind 'Couldn't connect to database' da die Abfragen zuvor eh mit PHP gecheckt werden.

Error Logs sind je nach Projekt natürlich unabdingbar.
 
Zurück
Oben