Muss ich meine Variablen verlassen, wenn ich vorbereitete MySQLi-Anweisungen verwende?

8

Wenn ich vorgefertigte MySQLi-Anweisungen wie folgt verwende:

%Vor%

Muss ich weiterhin meine Variablen wie $Session mit mysqli_real_escape_string(); wie unten:

umgehen %Vor%     
door 12.07.2014, 19:30
quelle

2 Antworten

6

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.

    
Tim 12.07.2014, 19:40
quelle
3

Nein, tust du nicht.

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.

    
Your Common Sense 19.02.2017 22:50
quelle