Nein, wenn Sie überall in Ihrer Anwendung vorbereitete Anweisungen verwenden, sind Sie vor der SQL-Injektion sicher. Ein wichtiger "Gotcha" ist jedoch ein Injektionsangriff zweiter Ordnung, der auftritt, wenn einige Abfragen vorbereitete Anweisungen verwenden und andere nicht.
Nach diese Antwort eines ähnlichen Frage zu SO:
vorbereitete Anweisungen / parametrisierte Abfragen sind ausreichend, um eine Injektion erster Ordnung bei dieser Anweisung zu verhindern. Wenn Sie an einer anderen Stelle in Ihrer Anwendung nicht geprüfte dynamische SQL verwenden, sind Sie immer noch anfällig für die Injektion 2. Ordnung.
Zusammenfassend erstellen vorbereitete Anweisungen eine Trennung zwischen den gesendeten Daten und der SQL-Abfrage selbst, wodurch sichergestellt wird, dass die Daten nicht als SQL-Abfrage missinterpretiert werden können. Ein Angreifer kann jedoch weiterhin SQL als Daten eingeben, und obwohl er beim ersten Speichern nicht ausgeführt wird, wenn Sie vorbereitete Anweisungen verwenden, müssen Sie beim Abrufen der Ergebnisse dennoch vorsichtig vorgehen. Vorbereitete Anweisungen schützen Ihre Anwendung an diesem bestimmten Ort, aber da SQL weiterhin in der Datenbank gespeichert werden darf, ist Ihre Anwendung unsicher, wenn Sie diese Daten später ohne Parametrierung verwenden.
Dies ist die einzige Antwort, die Sie brauchen.
All das verwirrte Gespräch in der anderen Antwort ist nur irrelevant. Der Typ versucht dir zu sagen, dass du in Gefahr bist, wenn du dumm genug bist, keine vorbereiteten Aussagen zu verwenden. Das ist ziemlich offensichtlich und irrelevant für eine vorbereitete Aussage selbst.
Tags und Links php mysql prepared-statement mysqli