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

MySQL-PHP-PDO-vorbereitete Anweisungen – Leistungsprobleme vs. Sicherheit

Ich denke, das fällt in die Kategorie "vorzeitige Optimierung".

Wie hoch ist der Overhead? Hast du es gemessen? Beeinträchtigt es überhaupt Ihre Serverleistung?

Die Chancen stehen gut, dass dies nicht der Fall ist.

Auf der positiven Seite haben Sie einen unbestreitbaren Gewinn an Sicherheit (was für jeden internetbasierten Shop ein großes Anliegen sein sollte).

Auf der anderen Seite besteht das Risiko, dass die Leistung beeinträchtigt wird. In dem von Ihnen bereitgestellten Link wird gezeigt, dass eine schlecht implementierte PDO-Vorbereitung unter bestimmten Umständen zu einer etwas geringeren Leistung führt als eine nicht vorbereitete Anweisung. Der Leistungsunterschied bei 5000 Läufen beträgt 0,298 Sekunden.

Unbedeutend. Umso mehr, wenn Sie feststellen, dass die "nicht vorbereiteten" Abfragen ohne ausgeführt werden die Input-Bereinigungsroutinen, die erforderlich wären, um sie in einer Live-Umgebung sicher zu machen. Wenn Sie die vorbereiteten Abfragen nicht verwenden, benötigen Sie eine Form der Eingabebereinigung, um SQL-Angriffe zu verhindern, und je nachdem, wie dies durchgeführt wird, müssen Sie möglicherweise die Ergebnismengen zurückmassieren.

Unterm Strich gibt es kein signifikantes Leistungsproblem, aber einen signifikanten Sicherheitsvorteil. Daher die offizielle Empfehlung, vorbereitete Erklärungen zu verwenden.

Sie sprechen in Ihrer Frage vom „gemeinsamen E-Shop“. Der "gemeinsame E-Shop" wird nie genug Verkehr haben, um sich über das Leistungsproblem Gedanken zu machen, falls es eines gibt. Das Sicherheitsproblem am anderen Ende...