2016-05-25 12 views
0

Ich bin nicht so vertraut mit den neueren PHP-Befehlen, also wollte ich mit Ihnen überprüfen, ob der folgende Code gegen SQL-Injektion geschützt ist?Ist dieser Code gegen SQL-Injektion geschützt?

$mysqli = new mysqli($server,$user , $password, $db_name); 
$stmt1 = $mysqli->prepare("insert into $db_table (request_date, from_city, from_country, to_city, to_country, travel_date, return_date, minus, plus, currency) 
             values(?,?,?,?,?,?,?,?,?,?)"); 

$date = date('Y-m-d H:i:s'); 
$stmt1->bind_param("ssssssssss",$date, 
           $_POST['from_city'], 
           $_POST['from_country'], 
           $_POST['to_city'], 
           $_POST['to_country'], 
           $_POST['travel_date'], 
           $_POST['return_date'], 
           $_POST['minus'], 
           $_POST['plus'], 
           $_POST['currency'] 
        ); 

$stmt1->execute(); 

Grundsätzlich erhält das Skript Post-Daten aus dem Formular, zeichnet sie in eine db, und legt sie dann in ein anderes Skript, um die eigentliche Suche durchführen (auf einer Website Dritter).

Antwort

4

Ja, vorbereitete Anweisungen sind sicher gegen SQL-Injection, da sie nicht als Teil der SQL-Abfrage interpretiert werden - Sie können dort alles haben, es wird keinen Befehl ausführen.

Das heißt, Sie möchten vielleicht trotzdem ein wenig Validierung durchführen, um sicherzustellen, dass die Daten, die Sie akzeptieren, sinnvoll sind. Müll rein, Müll raus. Sie möchten beispielsweise ein ungültiges Datum nicht speichern.