Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: logowanie
Forum PHP.pl > Forum > Przedszkole
snaiper
tych tematow tu jest pewnie sporo no ale coz :/
jest tak: na zajeciach z php facet na przedstawil skrypty do logwania ale login i haslo byly ustawiane przez nas samych w innym pliku i potem sie do niego odwolywalismy, teraz chce to zrobic ale na MYSQL

wydaje mi sie ze zle sprawdzam poprawnosc wpisanych danych w formularzu z tymi co sa w bazie

<?php

include "./common_db.inc";
$wynik = false;
$link_id = db_connect();

$zapytanie = "SELECT nick, haslo FROM user WHERE nick = '$login' AND haslo = md5('$haslo')";
$odpowiedz = mysql_query($zapytanie) or exit;
if(mysql_num_rows($odpowiedz) != 0) {
$wynik = true;
$dane = mysql_fetch_array($wynik);

$GLOBALS['dobry_login'] = $dane['nick'];
$GLOBALS['dobre_haslo'] = $dane['haslo'];


}

mysql_close() or exit;

return $wynik;

?>

no i jak wpisze login i haslo to wyskakuje mi komunikat "BLAD LOGOWANIA"
jesli w tym pliku jest wszystko ok to w takim razie gdzie indziej mam blad ale wtedy zglosze sie na maila do kogos kto bedzie chcial mi pomoc
thx
carman
skrypt wyglada na poprawny exclamation.gif!skladniowo!!!.podkreslam skladniowo,poniewaz abstrahujac troche od tematu zadajac zapytanie w ten wlasnie sposob jestes narazony na tzw. SQL Injection, czyli prosto z formatek html'a idzie tekst do samego zapytania.
zwroc uwage na jedna rzecz - obrazowo pokazujac:
SELECT nick, haslo FROM user WHERE nick = '$login' AND haslo = md5('$haslo')
teraz z post'a leci do loginu taka rzecz:
asas' or 1=1 #
pole hasla mozesz sobie opuscic badz wpisac jakies bzdury, hasz i tak odkomentuje cala reszte, czyli konczysz lancuch apostrofem walisz zawsze prawde w postaci 1=1 i juz jestem zalogowany na Twojej stronce.
straszne prawda?
(prawde mowiac bardzo wiele ludzi popelnia ten radykalny blad, nie pomijajac instytucji rzadowych).
proponuje najpierw napisac sobie klase do obrobki danych wejsciowych przerabiajacych znaki specjalne na odpowiedniki entitles w html(jak nie wiesz co to,to googluj).
wracajac do tematu, blad moze byc powodowany tym, ze haslo w bazie przetrzymujesz w plain tekscie a nie md5(nie wiem czy uzyles do tego pola varchar, czy tez password-rozumiem,ze mowimy o MySql'u).
pozdrawiam.
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.