2016-04-17 3 views
0

Tut mir leid, wenn das an anderer Stelle beantwortet wurde, aber ich konnte keine gute gründliche Antwort finden, um jeden Schritt dieses Prozesses zu erklären. Es ist alles in Bits und Teilen, die sehr schwer zusammenzustellen sind.php/mysqli Validierung der Formulareingabe zum Einfügen in die Anzeige. Sicherheit bei jedem Schritt?

Ich mag würde wissen, wann und welche Maßnahmen die Sicherheit im gesamten Prozess der Anwendung:

  1. Form Validation
  2. Vorbereiten von Daten für Datenbank-Insertion
  3. Daten aus der Datenbank angezeigt

    1. Formularüberprüfung: Sollte ich die Rohform-Eingabe dafür verwenden, oder muss ich vor dem Versuch, irgendetwas zu entwerten, entkommen?

Beispiel: Habe ich die „mysqli_real_escape_string“ muß hier oder gehört es nur in Schritt 2 unten?

if (empty($_POST["email"])) { 
$emailERR = "* Required"; 
} else { 
    $email = mysqli_real_escape_string($_POST["email"]); 
     if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { 
     $emailERR = "* Invalid email"; 
     } 
    } 
  1. Sobald die Eingabe überprüft wird FILTER_VALIDATE_EMAIL verwendet wird, ist es sicher, es zu senden „wie er ist“ in der Datenbank vorbereitete Anweisung verwenden oder es weitere Validierung oder sanitäre Anlagen benötigt?

  2. Wenn ich Daten aus der Datenbank anzeigen möchte, kann ich einfach "htmlspecialchars ($ fieldData)" und nichts anderes verwenden, um sicher in den Browsern der Benutzer angezeigt zu werden? Wenn ich zum Beispiel mysqli_real_escape_string vor dem Einfügen verwendet habe, muss ich noch etwas anderes tun, um es für die Anzeige neu zu formatieren, wenn ich es von der Datenbank bekomme?

Von dem, was ich bisher gelernt habe, ich bin die Antwort der Hoffnung ist:

  1. Verwendung roh Eingang zur Validierung

  2. Verwendung mit vorbereiteten Anweisungen mysqli_real_escape_string wenn Einfügen von Datensätzen

  3. Verwenden Sie htmlspecialchars, um Daten aus der Datenbank

  4. anzuzeigen

... aber ich bin neu in diesem, so lass es mich wissen, wenn ich etwas fehlt bin ...

Natürlich meine Sorge ist hier gegen Angriffe zu verteidigen ... Jede Hilfe wäre geschätzt. Dank

Antwort

0

1) Form-Validierung: Sie sollten sofort htmlspecialvars() verwenden, wenn jede $ _POST bekommen [ '...'] Werte:

$email = htmlspecialvars($_POST['email']); 

2) Vorbereitung Daten für die Einfügung: Ich empfehle PDO mit (und nicht mysqli). Die meisten Programmierer würden zustimmen, dass dies der bessere Weg ist, um mit MySQL fortzufahren, da es objektorientierter ist und Sie später nicht mehr Ihren gesamten Code ändern müssen. Sie haben Ihre Daten bereits einmal in einem Schritt gefiltert, sodass Sie sie nicht erneut durchführen müssen.

3) Da Ihre Daten bereits gefiltert wurden, bevor Sie sie in die Datenbank eingefügt haben, müssen Sie sie nicht filtern, wenn Sie diese Daten abrufen, um sie anderen Benutzern anzuzeigen.

Hoffe, dass hilft! Lassen Sie mich wissen, wenn es

tat
Verwandte Themen