Wann sollten vorbereitete Anweisungen vermieden werden?
Eine gängige Praxis zur Verhinderung von SQL-Injection-Angriffen ist die Verwendung vorbereiteter Anweisungen. Es gibt jedoch Fälle, in denen vorbereitete Anweisungen möglicherweise nicht die geeignetste Option sind.
In diesem speziellen Fall überarbeitet der Entwickler eine Webanwendung, die grundlegende Abfragen wie SELECT foo,bar FROM baz WHERE quux verwendet = ? ORDER BY bar LIMIT 1. Diese Abfragen werden nur einmal pro Seitenaufruf ausgeführt. Darüber hinaus befindet sich der Entwickler in einer gehosteten Umgebung und möchte zusätzliche Serverlast vermeiden.
Angesichts dieser Überlegungen fragt sich der Entwickler, ob die Verwendung vorbereiteter Anweisungen erforderlich ist.
Antwort
Um festzustellen, ob vorbereitete Anweisungen vermieden werden sollten, ist es wichtig zu berücksichtigen, dass vorbereitete Anweisungen zwei Hauptvorteile bieten:
In diesem speziellen Szenario macht sich der Entwickler keine Sorgen um die Wiederverwendung von Abfragen, da jede Abfrage nur einmal pro Seitenaufruf ausgeführt wird. Daher ist der Leistungsvorteil der Wiederverwendung von Abfragen vernachlässigbar.
Der Aspekt der Injektionsverhinderung bleibt jedoch ein Problem. Um dieses Problem zu lösen, kann der Entwickler die Verwendung emulierter vorbereiteter Anweisungen in Betracht ziehen. Diese Anweisungen verwenden PHP-Funktionen, um Anführungszeichen und Parameterersetzungen zu handhaben und bieten Schutz vor SQL-Injection ohne den Overhead mehrerer Datenbank-Roundtrips.
Empfehlung
Basierend auf den Informationen Vorausgesetzt, es ist ratsam, auf vorbereitete Anweisungen zu verzichten und sich stattdessen für emulierte vorbereitete Anweisungen zu entscheiden. Dieser Ansatz bietet Schutz vor SQL-Injection und vermeidet gleichzeitig die zusätzlichen Datenbank-Roundtrips, die bei echten vorbereiteten Anweisungen anfallen würden.
Das obige ist der detaillierte Inhalt vonSollten vorbereitete Anweisungen für Einzelausführungsabfragen in einer gehosteten Umgebung vermieden werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!