mediengestalter.info
FAQ :: Mitgliederliste :: MGi Team

Willkommen auf dem Portal für Mediengestalter

Aktuelles Datum und Uhrzeit: Fr 19.04.2024 05:19 Benutzername: Passwort: Auto-Login

Thema: PHP: MySQL-Zugangsdaten schützen? vom 29.05.2007


Neues Thema eröffnen   Neue Antwort erstellen MGi Foren-Übersicht -> Programmierung -> PHP: MySQL-Zugangsdaten schützen?
Seite: 1, 2  Weiter
Autor Nachricht
Linger
Threadersteller

Dabei seit: 24.05.2007
Ort: Leipzig
Alter: 43
Geschlecht: Männlich
Verfasst Di 29.05.2007 23:18
Titel

PHP: MySQL-Zugangsdaten schützen?

Antworten mit Zitat Zum Seitenanfang

Hallo liebe Community!!

Ich habe leider nichts Passendes über die Suche gefunden - falls das Thema dennoch schonmal diskutiert wurde, hier schonmal ein ernst gemeintes "Tschuldigung" vorab...

Nun zum Eigentlichen:
Ich habe eine MySQL-Datenbank-Application mittels PHP realisert und dabei die Zugangsdaten zur Datenbank in einer extra Datei abgelegt, die in etwa so aussieht:

$dbhost='host.zur.db';
$dbuser='username';
$dbpass='password';
...


Diese Datei (PHP) hole ich mir via INCLUDE in das jeweilige Skript und erzeuge dort mein Datenbank-Handle. Das funktioniert auch alles dufte - nun aber das "Problem":

Wie verhindere ich es, dass sich jemand Fremdes diese PHP-Datei mit den DB-Zugangsdaten in ein eigenes Skript INCLUDEd und mittels GET_DEFINED_VARS() meine Daten ausliest??? Wenn auf dem Server des Fremden die Option "Allow_URL_fopen" auf ON gesetzt ist, ist das INCLUDEn meiner Datei ohne Probleme möglich.

Ich weiß, dass diese Art der Zugangsdatenspeicherung gängige Praxis bei PHP-MySQL-Anwendungen ist, aber scheinbar läßt sich das Auslesen irgendwie verhindern - ich habe zumindest im Netz nix gefunden, was ein Hijacking der Daten auf dem von mir beschriebenen Weg bestätigt... (Kann das leider nicht einfach testen, da mein Provider "Allow_URL_fopen" auf OFF gestellt hat.


Ich beschäftige mich erst seit etwa einem halben Jahr mit PHP und habe keine Ahnung, wo ich noch nach einer Antwort auf meine Frage suchen könnte (vielleicht gibts ja für das Problem sogar einen eigenen Begriff...) daher hoffe ich hier auf Lösungsansätze.


Besten Dank schomal vorab und
beste Grüße!!
Linger
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Mi 30.05.2007 00:04
Titel

Antworten mit Zitat Zum Seitenanfang

auf servern, wo jedermann ausserhalb seines "home" verzeichnisses daten einlesen kann, würde ich mich eh fern halten.

denn schützen kannst du dich gegen sowas, wenns möglich ist, nicht.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Anzeige
Anzeige
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mi 30.05.2007 08:18
Titel

Antworten mit Zitat Zum Seitenanfang

Grundsätzlich ist das gar nicht möglich.
Ruf doch mal deine PHP-Datei mit den Variablen im Browser auf.
Was siehst Du?!
Nix.
Genau das kommt auch beim Angreifer an.
Das gilt natürlich nur, wenn deine Datei auch eine PHP-Endung hat (meist .php).
Wenn Du sowas wie .inc verwendest, wird die Datei nicht automatisch von PHP geparst und wird vom Webserver als reine Text-Datei behandelt.

Desweiteren bringen einem Angreifer die Zugangsdaten nix, da in den meisten Fällen die Datenbank nur Verbindungen vom lokalen Rechner zulässt und nicht von extern.


Zuletzt bearbeitet von tacker am Mi 30.05.2007 08:19, insgesamt 1-mal bearbeitet
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Mi 30.05.2007 09:38
Titel

Antworten mit Zitat Zum Seitenanfang

tacker hat geschrieben:
Grundsätzlich ist das gar nicht möglich.
Ruf doch mal deine PHP-Datei mit den Variablen im Browser auf.
Was siehst Du?!
Nix.
Genau das kommt auch beim Angreifer an.
Das gilt natürlich nur, wenn deine Datei auch eine PHP-Endung hat (meist .php).
Wenn Du sowas wie .inc verwendest, wird die Datei nicht automatisch von PHP geparst und wird vom Webserver als reine Text-Datei behandelt.

Desweiteren bringen einem Angreifer die Zugangsdaten nix, da in den meisten Fällen die Datenbank nur Verbindungen vom lokalen Rechner zulässt und nicht von extern.


soweit ich das verstanden habe, handelt es sich um unerlaubte includes vom selben server aus. da würde das sehr wohl gehen, wenn der entsprechende server, wie angesprochen, schlampig eingerichtet ist, so das ich zb auf dein home verzeichniss zugreifen dürfte - und genau hier liegt der hund begraben, denn gegen sowas kann man sich nicht schützen.

alles andere, wo die dateien über den php interpreter geschickt werden, wird geparsed, und somit hast du natürlich recht, das der php source nicht inzusehen ist, vorrausgesetzt die dateien werden geoparsed (was natürlich auch bei .inc dateien möglich ist, je nach server konfig).
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mi 30.05.2007 12:03
Titel

Antworten mit Zitat Zum Seitenanfang

Unerlaubte Includes brauchen aber kein "allow_url_fopen" sondern gehen einfach per include/require.
Von daher dachte ich an fremde Angreifer.

Und da hast Du natürlich recht. Wenn sowas geht, sollte man keine sensiblen Daten haben und bald den Hoster wechseln.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
Linger
Threadersteller

Dabei seit: 24.05.2007
Ort: Leipzig
Alter: 43
Geschlecht: Männlich
Verfasst Mi 30.05.2007 14:50
Titel

Antworten mit Zitat Zum Seitenanfang

Erstmal besten Dank für die flinken Antworten!!
Leider sind sie nur teilweise zutreffend - wahrscheinlich habe ich mich etwas unglücklich ausgedrückt.

Das „Sicherheitsproblem“ liegt nicht bei meinem Hoster sondern bei dem des (fiktiven) Angreifers:
Nehmen wir mal an, meine Domain ist „sauberedomain.de“ beim Hoster A – dort sind dann die Zugangsdaten zur Datenbank z.B. unter „guestbook/database.inc.php“ abgelegt.
Diese „database.inc.php“ könnte dann, wie eingangs schon mal aufgeführt, so aussehen:

Code:

$dbhost='host.zur.db';
$dbuser='username';
$dbpass='password';
...


Eine Ausgabe erfolgt in dieser Datei nicht.

Nun könnte ein potentieller Angreifer mit der Domain „angreifer.de“ bei Hoster B (mit Allow_URL_fopen=ON) folgendes Skript erstellen:


Code:

include('http://www.sauberedomain.de/questbook/database.inc.php');
echo 'Host: '.$dbhost.' Username: '.$dbuser.' Passwort: '.$dbpass;




Und schon hätte er meine Daten auf dem Präsentierteller.
Hier müsste der Angreifer natürlich noch meine Variablennamen kenn, was ziemlich unwahrscheinlich ist.

Die PHP-Funktion GET_DEFINED_VARS() gestattet es jedoch, alle definierten Varablen eines Skripts auszugeben, ohne deren Namen zu kennen -
und spätestens jetzt könnte der Angreifer sich meine Daten sauber auflisten lassen.

Oder doch nicht???
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
tacker

Dabei seit: 22.03.2002
Ort: Trondheim, Norwegen
Alter: 43
Geschlecht: Männlich
Verfasst Mi 30.05.2007 15:05
Titel

Antworten mit Zitat Zum Seitenanfang

Linger hat geschrieben:
Nun könnte ein potentieller Angreifer mit der Domain „angreifer.de“ bei Hoster B (mit Allow_URL_fopen=ON) folgendes Skript erstellen:
Code:
include('http://www.sauberedomain.de/questbook/database.inc.php');
echo 'Host: '.$dbhost.' Username: '.$dbuser.' Passwort: '.$dbpass;

Richtig. Bringt ihm aber nix. Da er die Ausgabe deines Webservers included. Und die ist leer, da dein Konfigurations-Script auf .php endet und von deinem Webserver interpretiert wird.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
pRiMUS

Dabei seit: 09.09.2003
Ort: Vienna
Alter: 48
Geschlecht: Männlich
Verfasst Mi 30.05.2007 15:08
Titel

Antworten mit Zitat Zum Seitenanfang

exakt, alles was irgendwie durch den php interpreter geschickt wird (und das wird zunächst alles, es sei denn man includet direkt auf dem gleichen server) resultiert in blankem html.
  View user's profile Private Nachricht senden Website dieses Benutzers besuchen
 
Ähnliche Themen WordPress - Zugangsdaten
[WindowsCommander] FTP-Zugangsdaten übernehmen
[PHP + mySQL] Kann Fehler in einer mySQL-Phrase nicht finden
[PHP/MySQL] MySQL Error: 1054, falsche Tabelle ausgewählt?
[MySql]Lost connection to MySQL server during query
[php / mysql] Mysql Daten in php als Link ausgeben
Neues Thema eröffnen   Neue Antwort erstellen Seite: 1, 2  Weiter
MGi Foren-Übersicht -> Programmierung


Du kannst keine Beiträge in dieses Forum schreiben.
Du kannst auf Beiträge in diesem Forum nicht antworten.
Du kannst an Umfragen in diesem Forum nicht mitmachen.