Der Unterschied zwischen ${param} und #{param} in MySQL

Der Unterschied zwischen ${param} und #{param} in MySQL

Der von ${param} übergebene Parameter wird als Teil der SQL-Anweisung behandelt, z. B. die Übergabe des Tabellennamens und des Feldnamens

Beispiel: (der übergebene Wert ist id)

Sortiert nach ${param}

Das analysierte SQL lautet:

Sortieren nach ID

#{parm} Die übergebenen Daten werden als Zeichenfolge behandelt und den automatisch übergebenen Daten werden doppelte Anführungszeichen hinzugefügt

Beispiel: (der übergebene Wert ist id)

Wählen Sie * aus der Tabelle, wobei Name = #{param}

Das analysierte SQL lautet:

Wählen Sie * aus der Tabelle, in der Name = "id" ist.

Verwenden Sie aus Sicherheitsgründen nach Möglichkeit # zur Parameterübergabe. Dadurch können SQL-Injection-Angriffe wirksam verhindert werden.

Einführung in SQL-Injection

Ich habe mir direkt das Beispiel von Baidu angesehen und es war auf den ersten Blick klar.

Der SQL-Abfragecode zur Login-Verifizierung einer bestimmten Website lautet:

strSQL = "SELECT * FROM users WHERE (name = '" + userName + "') und (pw = '"+ passWord + "');"

Böswilliger Zugriff
Wenn userName = "1' OR '1'='1";與passWord = "1' OR '1'='1"; wird die ursprüngliche SQL-Zeichenfolge wie folgt ausgefüllt:
strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1'); "
Das heißt, der tatsächlich ausgeführte SQL-Befehl sieht folgendermaßen aus strSQL = "SELECT * FROM users; "

Dadurch wird die Überprüfung bei der im Hintergrund laufenden Kontoauthentifizierung geschickt umgangen und Benutzer können sich ohne Konto oder Kennwort auf der Website anmelden. Aus diesem Grund sind SQL-Injection-Angriffe gemeinhin als Lückentext-Spiel der Hacker bekannt.

Dies ist das Ende dieses Artikels über den Unterschied zwischen ${param} und #{param} in MySQL. Weitere Informationen zum Unterschied zwischen ${param} und #{param} in MySQL finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • Der Unterschied zwischen ## und $$ in dynamischem SQL unter Mybatis
  • Eine kurze Erläuterung des Unterschieds zwischen # und $ in Mybatis und wie SQL-Injection verhindert werden kann

<<:  Beheben Sie das Problem des schwarzen Bildschirms beim Starten der virtuellen VMware-Maschine

>>:  Ein Artikel, der Ihnen hilft, die Positionsberechnung in js gründlich zu verstehen

Artikel empfehlen

Mehrere Elemente in derselben Zeile unter Div in CSS rechtsbündig ausrichten

Methode 1: schweben: rechts Darüber hinaus wird d...

xtrabackup MySQL-Datenbank sichern und wiederherstellen

Aufgrund einiger seiner eigenen Merkmale (Sperren...

Border-Radius IE8-kompatible Verarbeitungsmethode

Laut canisue (http://caniuse.com/#search=border-r...

Vue implementiert ein Suchfeld mit einer Lupe

In diesem Artikel erfahren Sie, wie Sie mit Vue e...

JavaScript zum Erzielen eines einfachen Drag-Effekts

In diesem Artikel wird der spezifische JavaScript...

JS 4 super praktische Tipps zur Verbesserung der Entwicklungseffizienz

Inhaltsverzeichnis 1. Kurzschlussurteil 2. Option...

Installationsprozess der React Native-Umgebung

React-Native-Installationsprozess 1.npx react-nat...