SQL injection to próba wydania poleceń SQL do bazy danych poprzez interfejs strony internetowej, w celu uzyskania innych informacji. Mianowicie, te informacje są przechowywane informacje o bazie danych, takie jak nazwy użytkownika i hasła.
Pierwsza zasada zabezpieczania dowolnego skryptu lub strony dołączanej do instancji bazy danych to Nie ufaj wprowadzanym przez użytkownika.
Twój przykład próbuje zakończyć nieprawidłowo podany ciąg w instrukcji SQL. Aby to zrozumieć, najpierw musisz understand SQL statements. W przykładzie dodawania '
do paramater, twój 'zastrzyk' ma nadzieję na kolejny rodzaj rachunku:
SELECT nazwę użytkownika, hasło od użytkowników WHERE username = '$ username'
By dołączenie '
do tego oświadczenia, można następnie dodać dodatkowe paramaters SQL lub zapytania .: ' OR username --
SELECT nazwę użytkownika, hasło FROM użytkowników WHERE username = '' lub nazwa - „$ nazwa
To jest wstrzyknięciem (jeden typ; Przetwarzanie zapytania). Dane wejściowe użytkownika stają się wstrzykiwane oświadczenie do wstępnie napisanej instrukcji SQL.
Generalnie istnieją trzy rodzaje metod SQL injection:
- Zapytanie przekształcenia lub przekierowania (powyżej)
wiadomość
- Błąd oparte (Nie ma takiego użytkownika/hasło)
- Blind Zastrzyki
Przeczytaj na SQL Injection, How to test for vulnerabilities, understanding and overcoming SQL injection i to pytanie (i podobne) na StackOverflow about avoiding injections.
Edit:
miarę testowania witryny dla SQL injection, rozumiem, że dostaje dużo bardziej skomplikowane niż po prostu „dołączyć symbol”. Jeśli Twoja strona jest krytyczna, a Ty (lub Twoja firma) możesz sobie na to pozwolić, zatrudnij profesjonalnego testera pióra. Jeśli to nie zadziała, this great exaxmple/proof może pokazać niektóre popularne techniki, których można użyć do wykonania testu wtrysku.Istnieje również SQLMap, który może zautomatyzować niektóre testy dla scenariuszy SQL Injection i przejęcia bazy danych.
DOWOLNE pole tekstowe lub dane wejściowe na stronie, na której użytkownik może wpisywać i wprowadzać dane, może mieć iniekcję SQL, jeśli wpis użytkownika zostanie przekazany do polecenia SQL. – DOK
możliwy duplikat [Co to jest SQL injection?] (Http://stackoverflow.com/questions/601300/what-is-sql-injection) – CanSpice