SQL injection is a type of security exploit/vulnerability in which the attacker submits a SQL code to a Web form input box exposing the back-end
database to gain access to resources or make changes to data. SQL injection allows an attacker to create, read, update, alter or delete data stored in the back-end database. A SQL injection attack can occur when a web application utilizes
user-supplied data without proper validation or encoding as part of a
command or query.
Typically,
on a Web form for user authentication, when a user enters their name and
password into the text boxes provided for them, those values are
inserted into a SELECT query as it is. If the values entered are found as
expected, the user is allowed access; if they aren't found, access is
denied. However, most Web forms have no mechanisms in place to block
input other than names and passwords. Unless such precautions are taken,
an attacker can use the input boxes to send their own request to the
database, which could allow them to download the entire database or
interact with it in other illicit ways.
More than 20 percent of all web vulnerabilities being attributed to
SQL injection, this is the second most common software vulnerability, as due to it anyone can get access to the database of your system.
Therefore, having the ability to find and prevent SQL injection should
be top of mind for web developers and security personnel. In general, a
SQL injection attack exploits a web application that does not properly
validate or encode user-supplied input and then uses that input as part
of a query or command against a back-end database.
If your web application has a form asking for a user id. Then a hacker may write any user id "number or 1=1" if you have not done proper validation before using the input then this may compromise your database security. Hacker may also use a complete query like for the above example hacker may write "# or 1=1; Select * from users ; --" if this query executes then whole of your users information can be displayed and remaining of your query will be commented to avoid errors.
According to security experts, the reason that SQL injection and many other exploits, such as cross-site scripting,
are possible is that security is not sufficiently emphasized in
development. To protect the integrity of Web sites and applications,
experts recommend simple precautions during development such as
controlling the types and numbers of characters accepted by input boxes.
Prevention
You can prevent SQL injection if you adopt an input validation technique
in which user input is authenticated against a set of defined rules for
length, type and syntax and also against business rules. Most of the languages provide support for prevention of sql injection by the use of prepared statements/queries which checks the parameters to be used in the query for sql injection. Use strongly typed parameterized query APIs with placeholder substitution markers, even when calling stored procedures. Show care when using stored procedures since they are generally safe
from injection. However, be careful as they can be injectable (such as
via the use of exec() or concatenating arguments within the stored
procedure).
Posted on:
Monday, 14 December 2015
Zain Aftab
attack
definition
errors
exploit
exploits
fatal
hacker
help
introduction
PHP
prevention
queries
query
security
Select
sql
Sql injection
vulnerability
web development
website development
Comments
Thank you for your comment :)