What is SQL Injection and how to fix it

by bootsity on Jun 4, 2019 Philosophy 1078 Views

1. Introduction

In this article, we learn about SQL injection security vulnerability in web application. We see an example of SQL Injection, learn in in-depth how it works, and see how we can fix this vulnerability. We use PHP and MySQL for the examples. The SQL injection is the top exploit used by hackers and is one of the top attacks enlisted by the OWASP community.

2. What is SQL Injection

SQL Injection is a attack mostly performed on web applications. In SQL Injection, attacker injects portion of malicious SQL through some input interfaces like web forms. These injected statements goes to the database server behind a web application and may do unwanted actions like providing access to unauthorised person or deleting or reading sensitive information.
The SQL Injection vulnerability may affect any application powered by database supporting SQL like Oracle, MySQL and others.
SQL Injection attacks are one of the widest used, oldest, and very dangerous application vulnerabilities. The OWASP organization (Open Web Application Security Project) lists SQL Injections in their OWASP Top 10 document as the top threat to web application security.

3. Example of SQL Injection

Let’s create a form in HTML:

  1. <!DOCTYPE html>
  2. <html>
  3. <body>
  4. <h2>SQL injection in web applications</h2>
  5. <form action="/form-handler.php">
  6. Username:<br>
  7. <input type="text" name="username" value="">
  8. <br>
  9. Password:<br>
  10. <input type="password" name="password" value="">
  11. <br><br>
  12. <input type="submit" value="Submit">
  13. </form>
  14. </body>
  15. </html>

When we click on submit, the form above submits to below PHP script:

  1. <?php
  2.  
  3. mysql_connect('localhost', 'root', 'root');
  4. mysql_select_db('bootsity');
  5.  
  6. $username = $_POST["username"];
  7. $password = $_POST["password"];
  8. $query = "SELECT * FROM Users WHERE username = " . $username . " AND password =" . $password;
  9.  
  10. $re = mysql_query($query);
  11.  
  12. if (mysql_num_rows($re) == 0) {
  13. echo 'Not Logged In';
  14. } else {
  15. echo 'Logged In';
  16. }
  17. ?>

4. How SQL Injection works

In the above example, assume that the user fills up the form as below:

  1. Username: ' or '1'='1
  2. Password: ' or '1'='1

Now our $query becomes:

SELECT * FROM Users WHERE username='' or '1'='1' AND password='' or '1'='1';

This query always returns some rows and results in printing Logged In on the browser. So, here the attacker doesn’t know any username or password that are register in the database, but the attacker is still able to log in.

5. Fixing SQL Injection

Now we understand how SQL injection works in PHP. Generally, the best solution is to use prepared statements and parameterized queries. When we use prepared statements and parameterized queries, the SQL statements are parsed separately by the database engine. Let us see these approaches below:

5.1 Using PDO

We can change our form-handler.php to use PDO:

  1. <?php
  2.  
  3. $dsn = "mysql:host=localhost;dbname=bootsity";
  4. $user = "root";
  5. $passwd = "root";
  6.  
  7. $pdo = new PDO($dsn, $user, $passwd);
  8.  
  9. $username = $_POST["username"];
  10. $password = $_POST["password"];
  11.  
  12. $stmt = $pdo->prepare('SELECT * FROM Users WHERE username = :username AND password = :password');
  13.  
  14. $stmt->bindParam(':username', $username);
  15. $stmt->bindParam(':password', $password);
  16.  
  17. $stmt->execute();
  18.  
  19. if (count($stmt) == 0) {
  20. echo 'Not Logged In';
  21. } else {
  22. echo 'Logged In';
  23. }
  24.  
  25. https://article-realm.com/article/Reference-Education/Philosophy/2509-What-is-SQL-Injection-and-how-to-fix-it.html

URL

https://bootsity.com/php/what-is-sql-injection-and-how-to-fix-it
Tutorial article to describe SQL Injection vulnerability in web application with example in PHP and MySQL

Comments

No comments have been left here yet. Be the first who will do it.
Safety

captchaPlease input letters you see on the image.
Click on image to redraw.

Reviews

Guest

Overall Rating:

Statistics

Members
Members: 16795
Publishing
Articles: 78,609
Categories: 202
Online
Active Users: 332
Members: 0
Guests: 332
Bots: 6846
Visits last 24h (live): 3821
Visits last 24h (bots): 54972

Latest Comments

I enjoy learning about emerging technologies, and after reading topics like this, I sometimes take a break with EaglerCraft before diving back into work.
The biggest attraction of Veck IO is its nonstop multiplayer action.  
on Aug 3, 2026 about GitLab vs GitHub: Key Differences
I live in the UK and was confused about how the whole online Nikah process works. This page actually answered most of my questions, especially about the documents and registration. Really...
on Aug 2, 2026 about Josephine Linnea
Only 3 slots left for tonight! Demand for Escort Service in Gurgaon is extremely high in Delhi NCR this weekend. Our escorts are being booked quickly—choose your favorite companion before...
on Aug 2, 2026 about The Latest Online Business
Thanks for sharing these helpful remedies for managing anal herpes symptoms. Since clear visuals can make health topics much easier to understand, I often convert medical diagrams into simplified...
Looking for a relaxing escape? Try the top Massage Spa Near Me in Delhi . The therapists are skilled, the ambience is peaceful, and the overall experience leaves you completely refreshed. Highly...
Many overseas Pakistanis struggle to find clear information about the divorce process, so it's great to see everything explained in one place. I especially liked this legal platform for how...
on Jul 30, 2026 about Josephine Linnea
Repuve Mérida verification simplifies registration searches for every used vehicle buyer click aqui
rhythm games are a genre that centers every action on a tune; they are more than just games with pleasant background music. As soon as a level starts, players understand that in order to create...
My Travel Case offers a range of travel packages designed to help customers explore domestic and international destinations with ease. With industry experience and a focus on affordable deals, the...
on Jul 29, 2026 about Travel Case

Translate To: