• Hey. Nur mal eine generelle Frage: Es wäre nett, wenn sich jemand die 3 Codeblöcke anschauen könnte.

    Wenn Tipps zur Sicherheit bestehen, wäre es nett, wenn diese mitgeteilt werden, am besten auch wie ich diese konkret hier anwende.


    Ich finde zum Thema Sicherheit sehr viele Artikel, jedoch lassen die sich 1. schwer auf die Beispiele anwenden (ich wüsste zumindest nicht wie) und 2. wiedersprechen sie sich.

    Deswegen schreibe ich es einmal hier. Es wäre supernett, wenn sich jemand die Zeit dafür nehmen würde. Danke!:)


    Code
    1. require 'data/connect.php';
    2. $sql = "SELECT * FROM users WHERE user='$uname'";
    3. foreach ($conn->query($sql) as $user);
    4. echo $user["data"]
    Code
    1. $sql = "SELECT * FROM users ORDER by id DESC";
    2. $db_erg = mysqli_query($conn, $sql);
    3. while ($zeile = mysqli_fetch_assoc($db_erg)) {
    4. echo $zeile["user"];
    5. }
    Code
    1. require 'data/connect.php';
    2. $sql = "INSERT INTO namespace (fb, datum) VALUES ('$fd', '$datum')";
    3. if ($conn->query($sql) === TRUE) {
    4.     echo "Erfolgreich.";
    5. }
  • Stichwort: SQL-Injection


    ->query()würde ich an Deiner Stelle gleich wieder vergessen.


    Nutze prepared statements: https://www.php.net/manual/de/pdo.prepared-statements.php


    PHP
    1. $dbh = new PDO('mysql:host=localhost;dbname=test', $user, $pass);
    2. // user in users? tabelle sollte `user` heißen, und das feld `name`. Also `user`.`name`
    3. $stmt = $dbh->prepare("SELECT * FROM `users` where `user` = :uname;");
    4. $stmt->execute(['uname' => $uname]);
    5. // siehe https://www.php.net/manual/de/pdostatement.fetch.php
    6. // um rows zu ziehen (fetch)
  • Ist ein wenig verwirrend, wenn ihn die Thematik eh schon verwirrt.

    PHP
    1. // user in users? tabelle sollte `user` heißen, und das feld `name`. Also `user`.`name`

    Dann müsste die Zeile 3 aber so aussehen:

    PHP
    1. $stmt = $dbh->prepare("SELECT * FROM `user` where `name` = :uname;");

    Sollte es hier um einen Login gehen, würde ich auch nur nach dem Passwort fragen, bspw.:

    PHP
    1. $stmt = $dbh->prepare("SELECT `password` FROM `user` where `name` = :uname;");

    alle anderen Daten wären in dem Moment unwichtig.