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 überprüfen Sie, ob MySQL erfolgreich installiert wurde

Nachdem MySQL installiert wurde, können Sie in ei...

Probleme und Lösungen bei der Installation von Mininet auf Ubuntu 16.04.4LTS

Mininet Mininet ist eine leichtgewichtige, softwa...

jQuery-Plugin zum Erreichen einer Bildunterbrechung

In diesem Artikel wird der spezifische Code des j...

Fragen zum Vorstellungsgespräch zu JS 9 Promise

Inhaltsverzeichnis 1. Mehrere .catch 2. Mehrere ....

Einige Tipps zur Beschleunigung der Entwicklung von WeChat-Miniprogrammen

1. Erstellen Sie eine Seite mit app.json Gemäß un...

So konfigurieren Sie die virtuelle Benutzeranmeldung in vsftpd

yum installiere vsftpd [root@localhost usw.]# yum...

HTML-Tutorial, leicht zu erlernende HTML-Sprache (2)

*******************Einführung in die HTML-Sprache ...

Detaillierte Erläuterung der Javascript-Wissenspunkte

Inhaltsverzeichnis 1. Grundlegende Einführung in ...

Der Unterschied zwischen MySQL Outer Join und Inner Join Abfrage

Die Syntax für einen äußeren Join lautet wie folg...

React implementiert Paging-Effekt

In diesem Artikel wird der spezifische Code für R...

So aktivieren Sie die JMX-Überwachung über Tomcat

Erstellen Sie eine Simulationsumgebung: Betriebss...

Verwendung und Unterschied von Js-Modulverpackungsexporten erfordern Import

Inhaltsverzeichnis 1. Commonjs-Exporte und erford...

Eine kurze Analyse der Crontab-Aufgabenplanung in Linux

1. Erstellen Sie eine Planungsaufgabe Anweisung c...

Einrichten eines Proxyservers mit nginx

Nginx kann seine Reverse-Proxy-Funktion zum Imple...