2016-06-14 5 views
-2

Ich schreibe einen Code, der die Benutzertexteingabe in einem Registrierungsformular verarbeitet. Ich habe die folgende Funktion, die dafür sorgen, implementiert, dass die Eingabedaten sicher:Eingabedatenverarbeitung mit PHP für Sicherheit

function input_check($Indata, $dbc) {  // input_check($Indata, $dbc) 
    $Indata = trim($Indata);    // remove white spaces 
    $Indata = stripslashes($Indata);  // remove back slashes 
    $Indata = strip_tags($Indata);   // remove html tags 
    $Indata = htmlspecialchars($Indata); // convert html entities 
    $Indata = mysql_real_escape_string($Indata,$dbc); 
    return $Indata; 
} 

Gibt es eine andere Verarbeitung, die ich, um zu tun, um sicherzustellen, dass die Eingabe sicher ist?

Ich wollte sicher vor bösartigen Eingangsdaten

+0

Sicher was zu tun? –

+1

Ja, da ist 'base64_encode()'! –

+0

'base64_encode'ing ist so gut, dass ich es oft' base_sexy_4_encoding' nenne, um meine Liebe zu dieser wunderbaren Funktion zu teilen ':-)' – Martin

Antwort

1

Ihre Strategie, alle möglichen Flucht Mechanismen nutzen, kann sicher sein, aber Ihre Anwendung zu komplex machen - sich vorstellen, was Sie tun müssen, um die Daten zu verwenden (das scheint später in einer MySQL-Datenbank gespeichert werden, oder?), um es später in einem HTML-Formular zu drucken.

Ein weiser Ansatz ist, um nur den ausreichenden Flucht-Mechanismus zu verwenden, abhängig von der Verwendung der Daten:

  • zum Speichern von Daten in einer MySQL-Datenbank, verwenden Sie eine Datenbank zu entkommen Mechanismus (btw statt mysql_real_escape_string() die veraltet, verwenden Sie PDO::quote() oder noch besser parameter binding verwendet werden, die bereits für Sie nicht entkommen)
  • gespeicherten Daten im hTML-Text drucken htmlspecialchars() verwenden, möglicherweise in Verbindung mit strip_tags()
  • gespeicherten Daten in hTML-Attributen drucken Verwenden Sie htmlspecialchars() zusammen mit urlencode()

... und so weiter. Dann sind Sie wahrscheinlich sicher vor SQLInjection, XSS-Attacken und so weiter.

+0

Während dies eine gute Antwort ist, würde ich 'htmlentities' über' htmlspecialchars' empfehlen, so wie es ist vollständiger (aber das ist wahrscheinlich kein Mörder). – Martin

+1

nein, nicht strip_tags verwenden, nur htmlspecialchars. und achten Sie darauf, die Flags ENT_QUOTES | zu verwenden ENT_SUBSTITUTE | ENT_DISALLOWED – hanshenrik

+0

Vielen Dank für Ihre Beiträge. Ein besonderer Dank geht an dich Joachim Schirrmacher für deine Zeit, deine Antwort zu erweitern, die wirklich hilfreich ist –