The difference between ${param} and #{param} in MySQL

The difference between ${param} and #{param} in MySQL

The parameter passed by ${param} will be treated as part of the SQL statement, such as passing the table name and field name

Example: (the value passed is id)

order by ${param}

The parsed SQL is:

order by id

#{parm} The data passed in is treated as a string, and double quotes are added to the automatically passed in data

Example: (the value passed is id)

select * from table where name = #{param}

The parsed SQL is:

select * from table where name = "id"

For security reasons, use # to pass parameters wherever possible, which can effectively prevent SQL injection attacks.

Introduction to SQL injection

I went directly to Baidu's example and it felt clear at a glance.

The SQL query code for login verification of a certain website is:

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

Malicious entry
When userName = "1' OR '1'='1";與passWord = "1' OR '1'='1"; the original SQL string will be filled in as
strSQL = "SELECT * FROM users WHERE (name = '1' OR '1'='1') and (pw = '1' OR '1'='1'); "
That is, the SQL command actually executed will become the following strSQL = "SELECT * FROM users; "

This cleverly bypasses the verification during background account authentication, allowing users to log in to the website without an account or password. Therefore, SQL injection attacks are commonly known as hackers' fill-in-the-blank game.

This is the end of this article about the difference between ${param} and #{param} in MySQL. For more information about the difference between ${param} and #{param} in MySQL, please search for previous articles on 123WORDPRESS.COM or continue to browse the following related articles. I hope you will support 123WORDPRESS.COM in the future!

You may also be interested in:
  • The difference between ## and $$ in dynamic SQL under Mybatis
  • A brief discussion on the difference between # and $ in mybatis and how to prevent sql injection

<<:  Solve the problem of black screen when starting VMware virtual machine

>>:  An article to help you thoroughly understand position calculation in js

Recommend

5 ways to quickly remove the blank space of Inline-Block in HTML

The inline-block property value becomes very usef...

Simple CSS text animation effect

Achieve results Implementation Code html <div ...

vue cli3 implements the steps of packaging by environment

The vue project built with cli3 is known as a zer...

Two ways to introduce svg icons in Vue

How to introduce svg icons in Vue Method 1 of int...

How to update Ubuntu 20.04 LTS on Windows 10

April 23, 2020, Today, Ubuntu 20.04 on Windows al...

Detailed explanation of publicPath usage in Webpack

Table of contents output output.path output.publi...

Some Linux file permission management methods you may not know

Why do we need permission management? 1. Computer...

Research on the value of position attribute in CSS (summary)

The CSS position attribute specifies the element&...

Docker image access to local elasticsearch port operation

Using the image service deployed by docker stack,...

MySQL 5.7 zip archive version installation tutorial

This article shares the installation tutorial of ...

How to safely shut down a MySQL instance

This article analyzes the process of shutting dow...

About converting textarea text to html, that is, carriage return and line break

Description: Change the carriage return in the tex...

How to remove inline styles defined by the style attribute (element.style)

When modifying Magento frequently, you may encount...