Sicherheit mit PHP/SQL

Hallo allerseits
Zur Zeit bastle ich gerade an einer MySQL - Datenbank unter Windows XP.
Diese Datenbank soll ein PHP-Gesicht bekommen. Das heißt der Zugriff auf die Datenbank erfolgt mittels PHP - Webseiten.
Da habe ich aber Angst um die Sicherheit, denn im PHP Quelltext würde der böswillige Hacker einpaar Ansatzpunkte finden wie er Daten auspionieren kann.
z.B.:
Mit diesen Befehl würde ich mich mit der Datenbank verbinden:

Code:
$dbconnect = mysql_connect ("Server", "User", "Passwort")
or die ("Keine Verbindung möglich")

Leider kann jeder die Logindaten sehen wenn er in den Quelltext schaut.
Ich hatte mir die Problematik bei PHP/SQL - Projekten wie beim PHPBB - Forum angeschaut. Sie hatten eine dafür vordefinierte PHP-Seite gehabt, wo man ähnlich wie hier seine Daten eintragen mußte. Aber nach der Installation konnte man die PHP-Seite wieder löschen. Aber wie findet das PHP-Script nun Bezug auf seine Datenbank, wenn es keine Anmeldeinfos mehr hat? Kann ich die Authentifizierung etwas geheimer durchführen?
Ich selbst hatte mit den Gedanken gespielt eine Tabelle mit allen Benutzern anzulegen, die auf die Datenbank Zugriff haben und nur auf Datensätze die ihnen gehören. Zuvor benötige ich aber eine Anmeldung an die Datenbank, damit der Benutzer aus der Tabelle auch ausgelesen werden kann und seine Anmeldedaten überprüft werden können. Also bräuchte man ein Extrakonto - Datenbankumfassend um sich erst an die Datenbank anzumelden wo Leserechte auch schon ausreichen würden um die Benutzerdaten zu lesen.
Würde das in diesen Augenblick kein Sicherheitsmanko sein, wenn sich der Angreifer in diesen Augenblick eine Abfrage auf einen anderen bekannten User gibt und ließt sein Kennwort aus - Stichwort: SQL Injections.
Als nächstes sollten doch auch die Benutzer Daten in anderen Tabellen schreiben können und benötigen somit auch Schreibrechte? Aber wie kann ich diese nur für die expliziten Benutzer für deren Datensätze die mit anderen in Beziehung stehen diese Rechte vergeben? Der Benutzer sollte ja selbst auch nicht in der Lage sein direkt seine Daten in die Datenbank einzutragen, sondern eher das Script. - Ähnlich wie bei Browsergames, der Spieler kann ein Gebäude bauen lassen - Das Gebäude steht aber erst(wird in der Tabelle eingetragen) wenn eine bestimmte Zeit abgelaufen ist.
Und ganz zum Schluss noch eine letzte Frage: Kann ich Sonstige PHP Befehle wie die des mysql_query, die anschließend direkt einen MySQL - Befehl in Klammern stehen hat unterbinden, oder geheimer gestalten? Denn bei SQL - Befehlen wie der Select - Befehl, weiß der Angreifer wie hinetwa die Tabellen aufgebaut sind und kann einfacher eine SQL - Injection durchführen.
 
bedenke nur eine sache: so einfach kommt ein angreifer nicht an den php quellcode.
php ist eine serverseitige sprache, sprich sie wird nur auf dem server ausgeführt und das ergebnis wird dann in html form zum client gesendet.

demnach ist php so sicher wie der rest des systems ;-)


Sie hatten eine dafür vordefinierte PHP-Seite gehabt, wo man ähnlich wie hier seine Daten eintragen mußte. Aber nach der Installation konnte man die PHP-Seite wieder löschen. Aber wie findet das PHP-Script nun Bezug auf seine Datenbank, wenn es keine Anmeldeinfos mehr hat?

irgendwo müssen die informationen noch gespeichert sein, vll. in verschlüsseltem format.


Also bräuchte man ein Extrakonto - Datenbankumfassend um sich erst an die Datenbank anzumelden wo Leserechte auch schon ausreichen würden um die Benutzerdaten zu lesen.

vermeide einfach sicherheitslücken die ein sql injection möglich machen.
das ist recht einfach, du musst nur die mysql qry mit einigen funktionen testen, damit soetwas nicht möglich ist.
dazu gibt es tausende tutorials die du über google finden kannst ;-)
 
wie little_newb schon sagte, müsste man schon dich über FTP hacken, um an deine daten zukommen.
aber, speicher doch deine login-infos (ich schätze mal die datei config.php)
außerhalb des "/www/" Ordners auf dem server ab ;)
so kann man nicht mehr ohne weiteres (selbst wenn man dich hacken sollte) an deine MySQL-daten heran. diese methode find ich bis jetzt die beste, wenn es um login-daten geht :)

hoffe das hilft/beruhigt dich ein bissel ^^
cya
 
Zurück
Oben