Frage

Kann mir jemand im Klartext erklären, was parametrisierte Abfragen sind und wie sie in PHP für eine MySQL-Datenbank implementiert werden, um eine SQL-Injection zu vermeiden?

War es hilfreich?

Lösung

Der Abschnitt vorbereitete Anweisungen und gespeicherte Prozeduren des PHP Das Handbuch bezieht sich zwar speziell auf die gU, deckt dies jedoch gut ab, wenn es lautet:

Sie können als eine Art von angesehen werden kompilierte Vorlage für die SQL, die ein Anwendung will laufen, das kann sein angepasst mit variablen Parametern. Vorbereitete Aussagen bieten zwei Haupt Vorteile:

  • Die Abfrage muss nur analysiert werden (oder vorbereitet) einmal, kann aber ausgeführt werden mehrfach mit dem gleichen oder verschiedene Parameter. Bei der Abfrage vorbereitet ist, wird die Datenbank analysieren, kompilieren und optimieren Plan zur Ausführung der Abfrage. Zum komplexe Abfragen, die dieser Prozess annehmen kann genug Zeit, dass es merklich wird Verlangsamen Sie eine Anwendung, wenn es eine gibt müssen die gleiche Abfrage viele wiederholen Zeiten mit unterschiedlichen Parametern. Durch unter Verwendung einer vorbereiteten Aussage die Anwendung vermeidet das Wiederholen der Zyklus analysieren / kompilieren / optimieren. Dies bedeutet, dass vorbereitete Anweisungen verwenden weniger Ressourcen und damit schneller laufen.

  • Die Parameter für vorbereitete Anweisungen müssen nicht zitiert werden; der Fahrer behandelt dies automatisch. Wenn ein Anwendung ausschließlich verwendet vorbereitet Aussagen kann der Entwickler sicher sein dass keine SQL-Injection erfolgt (jedoch, wenn andere Teile der Abfragen werden mit aufgebaut uneingeschränkte Eingabe, SQL-Injection ist noch möglich).

    Wenn Sie nach einem bestimmten Beispiel für deren Verwendung suchen, enthält die oben verlinkte Seite auch Codebeispiele.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top