Wenn man eine Datenbankabfrage braucht, zum Beispiel für ein Loginsystem, greifen viele zu einem php-Skript. Dies ist aber relativ unsicher, wie folgender Comic darstellt:
Hier zeige ich euch, wie ihr euer php-Skript weitgehend gegen Sql-Injections absichern könnt.
Sicherheitstipps:
Das sind erstmal zwei Tipps, wie ihr eure Datenbank sicherer machen könnt.
Ich hoffe ich konnte helfen! Und ich werde erstmal meine Skripte umschreiben...
*Topic verschoben, da im T&T-Bereich keine PHP-Tipps zulässig sind.
Hier zeige ich euch, wie ihr euer php-Skript weitgehend gegen Sql-Injections absichern könnt.
Sicherheitstipps:
- Verbinde dich niemals mit dem root- bzw. Superuseraccount, sondern nimm einen neuen Benutzer:
So kann der Angreifer nicht als zu viel Schaden anrichten, da er auf die eine Datenbank gebunden ist. - Verwende Prepared-Statements mit gebundenen Variablen:
PHP-Quellcode
- <?php
- // SELECT-Bespiel
- // 1. Neue Datenbankverbindung
- $handler = new mysqli("host", "nutzer", "passw", "datenbankname");
- // 2. Statement vorbereiten ohne Userinput. Das ? wird gleich ersetzt.
- $stmt = $handler->prepare("SELECT * FROM vb-paradise_user WHERE (username = ?)");
- // 3. Den Platzhalter ? mit einem s für String binden. Es gibt folgende Parameter: i nteger, d ouble, s tring und b lob (paketweise)
- $stmt->bind_param('s', $name);
- // 4. $name festlegen, im Normalfall durch eine POST-Abfrage erfragte Daten
- $username = "Michdi";
- // 5. Query ausführen
- $stmt->execute();
- // 6. Daten zuweisen
- if (!$stmt->get_result()) {
- var_dump("no data in 'vb-paradise_user' with username = '$name'");
- // 6.1. Query mit einem anderen Wert wiederholen (optional)
- $name = "JemandAnderes";
- $stmt->execute();
- // ...
- } else {
- // Ergebnis ausgeben
- var_dump($res->fetch_all());
- }
- // 7. Verbindung schließen
- $stmt->close();
- ?>
- <?php
- // INSERT-Beispiel
- // 1. Query vorbereiten
- $stmt = $handler->prepare("INSERT INTO vb-paradise_user (id, username) VALUES (?, ?)");
- // 2. Platzhalter binden ("is" = integer und string, man kann so mehrere Parameter nacheinander nutzen (z. B. sssd)
- $stmt->bind_param("is", $id, $username);
- // 3. $id einen Wert zuweisen
- $id = 24049;
- // 3.1. $username einen Wert zuweisen
- $username = "Michdi";
- // 4. Ausführen
- $stmt->execute();
- // 5. Schliessen
- $stmt->close();
- ?>
Das sind erstmal zwei Tipps, wie ihr eure Datenbank sicherer machen könnt.
Ich hoffe ich konnte helfen! Und ich werde erstmal meine Skripte umschreiben...
*Topic verschoben, da im T&T-Bereich keine PHP-Tipps zulässig sind.
Die beste maschinelle Übersetzung der Welt - DeepL Übersetzer
Alle Zitate, die ich seit dem 1.9.2017 übersetzt habe, wurden vollautomatisch mit DeepL übersetzt.
Alle Zitate, die ich seit dem 1.9.2017 übersetzt habe, wurden vollautomatisch mit DeepL übersetzt.
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()