Datenbank-Sicherheit
Inhaltsverzeichnis
Heutzutage sind Datenbanken die Hauptkomponenten jeder webbasierten
Anwendung, aufgrund welcher Websites verschiedene dynamische Inhalte
anbieten können. Nachdem sensible oder geheime Informationen in solch
einer Datenbank gespeichert werden können, sollten Sie deren Schutz
ernsthaft bedenken.
Um Informationen zu bekommen oder zu speichern, müssen Sie eine Verbindung
zur Datenbank herstellen, eine legitime Abfrage senden, das Ergebnis
holen, und die Verbindung schließen. Heutzutage ist die allgemein
verwendete Abfragesprache für solche Interaktionen die Structured Query
Language (SQL). Sehen Sie, wie sich ein Angreifer
an einer SQL-Abfrage zu schaffen machen
kann.
Sie werden merken, dass PHP Ihre Datenbank nicht selbst
schützen kann. Die folgenden Abschnitte sind eine Einführung in die
Grundlagen, wie man innerhalb von PHP-Skripten auf
Datenbanken zugreift und diese manipuliert.
Behalten Sie diese einfache Regel im Hinterkopf: tief gestaffelte
Verteidigung. Je mehr Platz Sie den Maßnahmen zum Schutz Ihrer Datenbank
geben, desto geringer ist die Wahrscheinlichkeit, dass ein Angreifer
Erfolg hat und gespeicherte Geheiminformationen aufdeckt oder missbraucht.
Ein gutes Design des Datenbankschemas und die Anwendung wird mit Ihren
größten Befürchtungen fertig.
gabe dot aust at gmail dot com ¶5 days ago
The most significant way to protect databases is to simply use authentication! There are production systems online with null and default administrator credentials. See the recent "The Real World" hack...
Rule 1: Simply use authentication instead of not using it... Obviously do not save the credentials in a public-readable file.
Rule 2: Create a subsidiary account with access only to the live schema being used by your PHP app, i.e. never use the global DBMS admin account as a service login.
Rule 3: Block access at the DBMS end to only allow the web server to access the API. Most access is network based so that will involve filtering by IP.
Rule 4: You can obfuscate a bit more by setting a non-standard port but this may require code changes in the API calls you coded.
The above are some simple steps anyone can perform. More serious securing would likely involve setting up SSL connectivity.