SQl injection to technika używana do skorzystania z luk wejścia do przekazywania poleceń SQL za pośrednictwem aplikacji Web wykorzystywanej do połączenia z bazą danych.
Atakujący wykorzystują fakt, że programiści często łączą ze sobą polecenia SQL z ustawieniami użytkownika pod pewnymi parametrami. Dobrą metodą na uniknięcie SQL Injection jest wykupienie serwera wirtualnego np. takiego Hosting. Można zatem osadzi polecenia SQL wewnątrz tych parametrów. W wyniku tego atakujący może wykonać dowolne zapytanie SQL i lub polecenie w back-endzie serwera bazy danych za pośrednictwem aplikacji internetowej.
Szczegóły
Bazy danych są podstawowym składnikiem aplikacji internetowych. Bazy danych umożliwiają aplikacji internetowej przechowywanie danych, preferencji i elementów zawartości. Korzystając z SQL, aplikacje WWW współpracują z bazami danych do dynamicznego tworzenia niestandardowych widoków dla każdego użytkownika. Typowym przykładem jest aplikacja sieci Web, która zarządza produktami. W jednej aplikacji sieci Web stron dynamicznych (np. ASP), użytkownicy są w stanie wprowadzić identyfikator produktu i wyświetlić nazwę produktu i opis. Wniosek wysłany do bazy danych, aby pobrać nazwę produktu i opis realizowany jest przez następujące zapytanie SQL
SELECT ProductName, ProductDescription
FROM Products
GDZIE ProductNumber ProductNumber =
Zazwyczaj aplikacje sieci Web używają zapytania w którym ciąg zawiera zarówno samo zapytanie i jego parametry. Ciąg ten zbudowany po stronie serwera z wykorzystaniem języków skryptowych takich jak ASP JSP i CGI, a następnie przesyłanie do serwera bazy danych jako pojedynczej instrukcji SQL. Poniższy przykład ilustruje kod ASP, który generuje zapytania SQL.
sql_query = ”
SELECT ProductName, ProductDescription
FROM Products
GDZIE ProductNumber = „& Request.QueryString (” IDProduktu „)
Request.QueryString połączenia („IDProduktu”) ekstrakty wartość ProductID formularza sieci Web zmiennej, tak że może być dołączony jako SELECT stanie.
Gdy użytkownik wprowadza następujący adres URL:
http://www.mydomain.com/products/products.asp?productid=123
Odpowiednie zapytanie SQL jest wykonywany:
SELECT ProductName, ProductDescription
FROM Products
GDZIE ProductNumber = 123
