2016-04-05 8 views
0

Gibt es einen anderen Vorteil gegenüber oder die Differenz zwischenGute Praxis Weg zum Ausgang/Insert-post-Daten

$start = htmlspecialchars(strip_tags(date('Y-m-d H:i:s', mktime($_POST['shours'], $_POST['smins'], 0, $_POST['smonth'], $_POST['sday'], $_POST['syear'])))); 

und

$end = date('Y-m-d H:i:s', mktime(htmlspecialchars(strip_tags($_POST['hours'])), htmlspecialchars(strip_tags($_POST['mins'])), 0, htmlspecialchars(strip_tags($_POST['month'])), htmlspecialchars(strip_tags($_POST['day'])), htmspecialchars(strip_tags($_POST['year'])))); 

Ich bin mit PDO einzufügen vorbereitet execute($array(containing above strings and some others) oder bindparams Anweisungen aus, wenn nur wenige Parameter. Die obigen Zeilen werden auch an den Benutzer zurückgegeben, wenn das Einfügen erfolgreich war.

Ich bin nicht sicher, ob u tun müssen:

$output = htmlspecialchars($output); 
echo $output; 

oder unten gleich ist?

htmlspecialchars($output); 
echo $output; 

So $ Ausgang ist ab jetzt sicher zu verwenden?

+0

'htmlspecialchars' manipuliert den Eingabeparameter nicht in situ (es benötigt keine Referenz als Parameter, was dazu notwendig wäre), also müssen Sie das Ergebnis der Variable/a zuweisen. Aber folgen Ghulam Alis Ratschläge/Hinweise/Erklärungen in seiner/ihrer Antwort. –

Antwort

1

Wenn Sie PDO Prepared-Anweisungen verwenden, ist die Abfrage im Allgemeinen sicher. Im Allgemeinen meine ich, wenn Sie die Parameter binden und nicht direkt in der Abfrage verwenden.

Zum Beispiel, wenn dies Ihre Abfrage ist: "INSERT INTO Benutzer (Name) VALUES (: Name)" und Sie binden: Name mit der Benutzereingabe. Dies ist die sichere Praxis.

Allerdings, wenn Sie diese Abfrage "INSERT INTO Benutzer (Name) VALUES ('$ User_Input_Directly')" verwenden. Dies ist jetzt unsicher, da die Benutzereingabe das Ende von Anführungszeichen enthalten und die Abfrage bearbeiten kann.

htmlspecialchars wird nicht erstellt, um die Variablen in Abfrage zu schützen. Es wird nur verwendet, um Sonderzeichen in HTML-Entitäten umzuwandeln. Wenn Sie zum Beispiel keine HTML-Codes in die Eingabe konvertieren möchten, können Sie diesen Code verwenden, aber das bedeutet nicht, dass Sie innerhalb der Abfrage Schutz erhalten, da es keine Angebote konvertiert, es sei denn, Sie verwenden ENT_QUOTES als Flag. Für Test können Sie diese zwei Codes in Ihre PHP-Datei ausführen und den Unterschied sehen:

$Var = "<b>Hello World</b>"; 
echo $Var; //without htmlspecialchars the text will become bold 
echo htmlspecialchars($Var); //the text will show as it is without html bold format. 

So verwenden Sie nicht htmlspecialchars wenn Sie die Variable in Abfrage verwenden möchten. Verwenden Sie stattdessen PDO-prepared-Anweisungen oder verwenden Sie mysql_real_escape_string.

Bei der Ausgabe der Variablen schützt htmlspecialchars vor XSS- und Javascript-Angriffen.

Verwandte Themen