[PHP/MySQL]Sql injection

0

Witam,
piszę skrypty oparte na bazie danych MySQL ale nie za bardzo wiem w jaki sposób ludzie mogą wykorzystać SQL Injection... Zazwyczaj filtruje wchodzące dane funkcją mysql_real_escape_string. Ale mam takie pytanie... Jeżeli mam zapytanie:

SELECT * FROM users WHERE login='$login'

Gdzie jako $login użytkownik mógłby podać dowolną wartość, to jak dzięki temu ktoś mógłby wykonać dowolne zapytanie? Np. UPDATE users SET pass='abc'? Jedyna rzecz, jak można to wykorzystać która mi przychodzi do głowy, to podanie jako $login wartości: login' or 1=1 #

Nie mówcie, że pytam się o to bo chce się gdzieś włamać... Muszę wiedzieć jak to działa jeżeli chce skutecznie zabezpieczyć moje strony.

Z góry dziękuję

0

Sposobow jest mnostwo w zaleznosci od wprowadzanych danych wejsciowych. Jezeli masz wprowadzany login to przykladowo mozesz filtrowac to przez wyrazenie regularne, ktore dopusci tylko male i duze litery oraz cyfry.
Tu i tu jest troszke przykladow.

0

można rozdzielić zapytania średnikiem i dodać # do wykomentowania reszty kodu - przy dużym szczęściu serwer może być źle skonfigurowany i przepuścić 2 zapytania w jednym mysql_query

poza tym czyżbyś przechowywał hasła w bazie w postaci niezaszyfrowanej? :>

0
tomkiewicz napisał(a)

przy dużym szczęściu serwer może być źle skonfigurowany i przepuścić 2 zapytania w jednym mysql_query

Postgre tak, ale mysql nie slyszalem.

0

Sprawdzałem z dwoma zapytaniami - nie działa. Jak jeszcze można wykonać w tym przypadku inne zapytanie?

0

Widze, ze nie masz zamiaru zajrzec pod linki, ktore Ci podeslalem. Najwazniejsze jest myslenie, jezeli spodziewasz sie, ze w zmiennej $_POST czy $_GET jest liczba calkowita, to rzutuj ja na typ calkowity badz uzywaj funkcji intval(), jezeli jakas zmienna ma miec okreslona dlugosc to sprawdzaj to, uzywaj wyrazen regularnych, filtruj addslashes badz mysql_real_escape_string() itp, itd...

0

Ty chyba nie zrozumiałeś pytania. Ja mniejwięcej wiem jak się przed tym zabezpieczyć, tylko jestem ciekaw jak taki przykład można wykorzystać -,-

@down:
Można wygoglować, ale nie konieczne do tego przykładu -,-

0
Snowak napisał(a)

Nie mówcie, że pytam się o to bo chce się gdzieś włamać... Muszę wiedzieć jak to działa jeżeli chce skutecznie zabezpieczyć moje strony.

Wiec dalem Ci juz gotowa recepte.

Poza tym PRZYPOMNE, ze przyklady mozna sobie wygooglac

0

@Snowak: Akurat ten przykład, który podałeś jest na tyle klasyczny, że z pewnością na co drugiej stronie poświęconej zabezpieczeniu przed SQL Injection będzie podany.

P.S. Co do dwóch zapytań w jednym mysql_query - wystarczy update MySQL i to przejdzie (MySQL 5 akceptuje wiele zapytań za jednym razem).

1 użytkowników online, w tym zalogowanych: 0, gości: 1