Mysql
 sql >> Datenbank >  >> RDS >> Mysql

bind_param() nur für vom Benutzer eingegebene Werte erforderlich oder alle?

Technisch gesehen besteht kein Risiko, wenn Sie keine Daten vorbereiten, die nicht aus Benutzereingaben stammen. Dies wird jedoch aus mehreren Gründen dringend empfohlen:

  1. Wenn Sie vergessen, irgendwo Benutzereingabedaten vorzubereiten, besteht die Möglichkeit, dass dieser Benutzer etwas Verschiedenes in eine Datenzeile eingefügt hat, von dem Sie nicht erwartet haben, dass es jemals eine Benutzereingabe sein wird.
  2. Es empfiehlt sich, Ihre Schritte zu wiederholen, um Ihren Server sicher zu halten. Wenn Sie anfangen, es zu vermischen, vergessen Sie viel eher, Daten dort vorzubereiten, wo sie tatsächlich benötigt werden.
  3. Das Vorbereiten Ihrer Daten dient nicht nur dazu, SQL-Injection durch Angreifer zu verhindern. Es verhindert auch einige Datenbankprobleme, falls Sie versehentlich einen Fehler in Ihrem Code erstellen. Zum Beispiel:

Irgendwo in Ihrem Code haben Sie ein Protokollsystem, das Ihrer Datenbank ein Fehlerprotokoll hinzufügt. Die Zeichenfolge wäre:


Diese Zeichenfolge wird von Ihrem Skript generiert. Dafür bereiten Sie es nicht vor. Die Anführungszeichen in dieser Zeichenfolge verursachen jedoch Fehler in Ihrer Datenbank, die hätten verhindert werden können, wenn Sie sie trotzdem vorbereitet hätten.