1271 Stimmen

Wie kann ich Benutzereingaben mit PHP bereinigen?

Gibt es irgendwo eine Auffangfunktion, die gut funktioniert, um Benutzereingaben für SQL-Injection- und XSS-Angriffe zu säubern und gleichzeitig bestimmte Arten von HTML-Tags zuzulassen?

48 Stimmen

Um Sql-Injection zu vermeiden, verwendet man heutzutage PDO oder MySQLi.

97 Stimmen

Die Verwendung von PDO oder MySQLi ist nicht genug. Wenn Sie Ihre SQL-Anweisungen mit nicht vertrauenswürdigen Daten erstellen, wie select * from users where name='$name' dann spielt es keine Rolle, ob Sie PDO oder MySQLi oder MySQL verwenden. Sie sind immer noch in Gefahr. Sie müssen parametrisierte Abfragen verwenden oder, wenn es sein muss, Escape-Mechanismen für Ihre Daten einsetzen, aber das ist weit weniger empfehlenswert.

30 Stimmen

@AndyLester Wollen Sie damit andeuten, dass jemand PDO ohne vorbereitete Anweisungen verwendet? :)

-2voto

Anmol Mourya Punkte 460

Verwenden Sie So schneiden Sie Leerraum ab und entfernen nicht druckbare Zeichen

$data = trim(preg_replace('/[[:^print:]]/', '', $data));

-2voto

Till Punkte 21912

Es gibt die Filtererweiterung ( Anleitungs-Link , Handbuch ), was mit allen GPC-Variablen recht gut funktioniert. Es ist nicht eine magische-do-it-all Sache aber, müssen Sie noch zu verwenden.

-3voto

Erik Thiart Punkte 298

Vertrauen Sie niemals auf Benutzerdaten.

function clean_input($data) {
  $data = trim($data);
  $data = stripslashes($data);
  $data = htmlspecialchars($data);
  return $data;
}

El trim() Funktion entfernt Leerzeichen und andere vordefinierte Zeichen von beiden Seiten einer Zeichenkette.

El stripslashes() Funktion entfernt Backslashes

El htmlspecialchars() Funktion wandelt einige vordefinierte Zeichen in HTML-Entities um.

Die vordefinierten Zeichen sind:

& (ampersand) becomes &
" (double quote) becomes "
' (single quote) becomes '
< (less than) becomes &lt;
> (greater than) becomes &gt;

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X