Home  >  Article  >  Backend Development  >  Share suggestions on how to prevent SQL injection vulnerability attacks on PHP code websites_PHP Tutorial

Share suggestions on how to prevent SQL injection vulnerability attacks on PHP code websites_PHP Tutorial

WBOY
WBOYOriginal
2016-07-21 15:20:20709browse

Hackers can gain access to the website database through SQL injection attacks, and then they can obtain all the data in the website database. Malicious hackers can tamper with the data in the database through SQL injection and even destroy the data in the database. As a web developer, you hate this kind of hacker behavior. Of course, it is necessary to understand the principles of SQL injection and learn how to protect your website database through code. Today, I will use PHP and MySQL databases as examples to share what I know about SQL injection attacks, some simple preventive measures, and some suggestions on how to avoid SQL injection attacks.
What is SQL Injection?
To put it simply, SQL injection is to use code vulnerabilities to obtain data in the SQL database in the background of a website or application, and then gain access to the database. For example, hackers can exploit vulnerabilities in website code and use SQL injection to obtain all data information in the backend database of a company's website. After obtaining the database administrator's login user name and password, the hacker can freely modify the contents of the database or even delete the database. SQL injection can also be used to check the security of a website or application. There are many ways to inject SQL, but this article will only discuss the most basic principles. We will use PHP and MySQL as examples. The examples in this article are very simple. If you use other languages, it will not be difficult to understand. Just focus on the SQL commands.
A simple SQL injection attack case
Suppose we have a company website that stores all customer data and other important information in the website's backend database. If there is such a command in the code of the website login page to read user information.

Copy code The code is as follows:

$q = "SELECT `id` FROM `users` WHERE `username`= ' " .$_GET['username']. " ' AND `password`= ' " .$_GET['password']. " ' ";
?>

Now there is a hacker who wants to attack your database. He will try to enter the following code in the user name input box of this login page:
' ; SHOW TABLES;
Click the login button and this page will Shows all tables in the database. If he uses the following line of command now:
'; DROP TABLE [table name];
In this way, he will delete a table!
Of course, this is just a very simple example. The actual SQL injection method is much more complicated than this, and hackers are willing to spend a lot of time trying to attack your code. There are some software programs that can automatically continuously try SQL injection attacks. After understanding the principle of SQL injection attacks, let’s take a look at how to prevent SQL injection attacks.
Prevent SQL injection - use the mysql_real_escape_string() function
Use this function mysql_real_escape_string() in the database operation code to filter out special characters in the code, such as quotation marks, etc. For example:
Copy code The code is as follows:

$q = "SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' ";
?>

Prevent SQL injection - using the mysql_query() function
mysql_query() in particular will only execute the first line of SQL code, and the subsequent ones will not be executed. Recall that in the previous example, the hacker executed multiple SQL commands in the background through code and displayed the names of all tables. Therefore, the mysql_query() function can achieve further protection. We further evolve the code just now and get the following code:
Copy the code The code is as follows:

//connection
$database = mysql_connect("localhost", "username","password");
//db selection
mysql_select_db("database", $database);
$q = mysql_query("SELECT `id` FROM `users` WHERE `username`= ' " .mysql_real_escape_string( $_GET['username'] ). " ' AND `password`= ' " .mysql_real_escape_string( $_GET['password'] ). " ' ", $database);
?>

In addition, we can also determine the length of the input value in the PHP code, or use a function to check the input value. Therefore, where user input values ​​are accepted, input content must be filtered and checked. Of course, it is also very important to learn and understand the latest SQL injection methods so that purposeful prevention can be achieved. If you are using a platform-based website system such as WordPress, be sure to apply official patches or upgrade to a new version in a timely manner. If there is something wrong or you don’t understand, please leave a message in the comment area.

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/325082.htmlTechArticleHackers can gain access to the website database through SQL injection attacks, and then they can obtain all the information in the website database. Data, malicious hackers can tamper with the SQL injection function...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn