Heim > Datenbank > MySQL-Tutorial > Hauptteil

Warum eine Vorkompilierung die SQL-Injection verhindern kann

清浅
Freigeben: 2019-05-11 14:55:57
Original
5975 Leute haben es durchsucht

Der Grund, warum die Vorkompilierung die SQL-Injektion verhindern kann: Nach der Vorkompilierung wurde die SQL-Anweisung von der Datenbank analysiert, kompiliert und optimiert, und die Datenbank darf in parametrisierter Form abgefragt werden, sodass selbst bei sensiblen Zeichen die Die Datenbank behandelt sie als Attribute. Werte werden anstelle von SQL-Anweisungen verarbeitet.

Warum eine Vorkompilierung die SQL-Injection verhindern kann

Wie wir alle wissen, gibt es in JDBC eine Vorverarbeitungsfunktion. Einer der Hauptvorteile Der Vorteil dieser Funktion besteht darin, dass sie die Ausführungsgeschwindigkeit verbessern kann, insbesondere wenn die Datenbank mehrmals ausgeführt wird. Ein weiterer Vorteil besteht darin, SQL-Injection zu verhindern. Streng genommen sollte sie die überwiegende Mehrheit der SQL-Injections verhindern. Die Verwendung von

ist wie folgt:

String sql="update cz_zj_directpayment dp"+
 "set dp.projectid = ? where dp.payid= ?";
try {
PreparedStatement pset_f = conn.prepareStatement(sql);
pset_f.setString(1,inds[j]);
pset_f.setString(2,id);
pset_f.executeUpdate(sql_update);
}catch(Exception e){
//e.printStackTrace();
logger.error(e.message());
}
Nach dem Login kopieren

Warum kann es dann SQL-Injection verhindern und die Sicherheit verbessern, indem es auf diese Weise verarbeitet wird? Dies liegt tatsächlich daran, dass die SQL-Anweisung vor der Ausführung des Programms vorkompiliert wurde. Bevor die Datenbank zum ersten Mal ausgeführt wird, wurde die SQL-Anweisung von der Datenbank analysiert, kompiliert und optimiert Der entsprechende Ausführungsplan wird ebenfalls zwischengespeichert und ermöglicht der Datenbank die Verwendung von Parametern in standardisierter Form. Wenn die Parameter zur Laufzeit dynamisch an PreprareStatement übergeben werden, gilt auch dann, wenn die Parameter sensible Zeichen wie „1=1“ enthalten Die Datenbank behandelt ihn als Parameter und Feldattributwert und nicht als SQL. Der Befehl übernimmt auf diese Weise die Rolle einer SQL-Injection!

Das obige ist der detaillierte Inhalt vonWarum eine Vorkompilierung die SQL-Injection verhindern kann. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!