Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP][MYSQL] Logowanie i SQL Injection
Forum PHP.pl > Forum > Przedszkole
gawellus
Witam
Czy szyfrowanie hasła metodą sha1 pozwala uniknąć ataku sha1 ?
Mam skrypt logowania, zapytanie do bazy:

  1. <?php
  2. $wynik = $lacz->query("select * from user
  3.                         where login='$nazwa_uz'
  4.                         and haslo = sha1('$haslo')");
  5. ?>


Próbowałem wpisać z formularz jako hasło
  1. <?php
  2. ' OR '1'='1
  3. ?>
ale nie dało efektu.

Drugie pytanie: czy opcja w php.ini - magic_quotes_gpc = On jest wystarczającym zabezpieczeniem przed sql injection?
pyro
1. Hasło nic nie zrobi, ale musi być kodowane po stronie PHP, a nie SQL (tak jak to robisz teraz). Poza tym ktoś może wpisać złe znaki w loginie i tak będzie działać SQLi

2. W większości tak, aczkolwiek nie do końca i jest niewygodne. Odsyłam do Google w sprawie wyjaśnien.
Fifi209
Nie szyfrowanie a hashowanie hasła. Jak kolega już wspomniał rób to przed wysłaniem danych do bazy. W dodatku uczysz się złych nawyków jeżeli chodzi o używanie " i '.
Co do loginu, spokojnie można tam pisać np.:

user' /*
erix
1: o tym, że ktoś wklei tasiemca kilkukilobajtowego i go przesyła do bazy marnotrawiąc przepustowość, nie wspomnę. [;
Asmox
Gawellus opcję php.ini - magic_quotes_gpc = On masz włączoną u siebie na serwerze, czy na serwerze, gdzie zamierzasz hostować stronę ? winksmiley.jpg
gawellus
dobra, moment, bo nie wszystko czaje z tego co mi mówicie

1. "W dodatku uczysz się złych nawyków jeżeli chodzi o używanie " i '." - zupełnie nie wiem o co chodzi

2. user' /* - wpisałem w formularz logowania i wywala, że logowania niemożliwe (to chyba dobrze, nie?)

3. "o tym, że ktoś wklei tasiemca kilkukilobajtowego i go przesyła do bazy marnotrawiąc przepustowość, nie wspomnę. [; " - nie wklei, bo zanim dane są wysyłane do zapytania jest sprawdzana długość hasła

4. magic_quotes_gpc = On - mam włączone u siebie na localhost, nie jestem do końca przekonany, czy działa, bo get_magic_quotes_gpc() zwraca wartość true, ale dane z dziwnymi znakami wyświetla bez jakichkolwiek slashy :/

jeśli chodzi o to logowanie i sql inj. poproszę jakieś łopatologiczne rozwiązanie tego problemu, bo wszystko co czytałem samo sobie zaprzecza, np. jedni piszą, że trzeba dodawać addslashes przed dodawaniem rekordów, inni piszą, że ta metoda jest przestarzała, sam już nie wiem jak mam się zabezpieczyć :/

czytałem też ten artykuł: link
ale nigdzie nie widzę definicji funkcji "get_from_database()"
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.