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

So verwenden Sie SVG-Symbole in WeChat-Applets

SVG wurde in den letzten Jahren aufgrund seiner v...

CSS3 beschleunigt und verzögert Übergänge

1. Verwenden Sie die Geschwindigkeitskontrollfunk...

Vue ruft die Computerkamera auf, um die Fotofunktion zu realisieren

In diesem Artikelbeispiel wird der spezifische Co...

Detaillierte Erläuterung des Lazy Loading und Preloading von Webpack

Inhaltsverzeichnis Normale Belastung Lazy Loading...

So konfigurieren Sie SSL für den Koa2-Dienst

I. Einleitung 1: SSL-Zertifikat Mein Domänenname ...

Optimieren Sie MySQL mit 3 einfachen Tricks

Ich erwarte nicht, ein erfahrener Datenbankadmini...

Proxy_pass-Methode in mehreren if in Nginx-Standorten

1. Lassen Sie uns zunächst das relevante Wissen z...

Vier praktische Tipps für JavaScript-String-Operationen

Inhaltsverzeichnis Vorwort 1. Eine Zeichenfolge t...

Docker konfiguriert den Speicherort lokaler Images und Container

Verwenden Sie den Befehl „Find“, um Dateien zu fi...

So stellen Sie mit Docker ein einfaches C/C++-Programm bereit

1. Erstellen Sie zunächst eine Datei hello-world....

HTML-Elemente durch Anzeige oder Sichtbarkeit verbergen

Manchmal müssen wir steuern, ob HTML-Elemente auf ...