ugrás a tartalomhoz

Bejelentkező script hiba???

Kalas · 2010. Május. 7. (P), 09.02
Kérlek segítsetek, a kódom így néz ki:
<?php

$username = $_POST[username] ;
$password = $_POST[password] ;

$kapcsolat = mysql_connect ('127.0.0.1', 'animefanblog', 'naruto');
mysql_select_db ('animefanblog');

$parancs = "SELECT * FROM videosmart WHERE username = '$username'";
$valasz = mysql_query($parancs);
$sor = mysql_fetch_array($valasz);

if ($password == $sor[password])
	{
		print "Sikeres bejelentkezés";
	}
else 
	{
		print "Sikertelen bejelentkezés";
	}
mysql_close($kapcsolat);
?>
ezzel mi a baj?? mikor belépek a jó felhasználónév jelszóval akkor aztírja ki, hogy sikertelen bejelentkezés:S segítsetek!
 
1

Itt lehet tesztelni

Kalas · 2010. Május. 7. (P), 09.03
Teszt itt van animefanblog.atw.hu, felvan töltve rá.
2

Az adatbázisból a felhasználó

csaba86 · 2010. Május. 7. (P), 09.41
Az adatbázisból a felhasználó nevét kéred le, de te meg a jelszót ellenőrzöd. Kérdezd le mind a kettőt és ellenőrizd is őket és használj valami ellenőrzést mert könnyen fellehet törni az oldalad ha ezt így fogod használni.
3

A "select *" szerintem

deejayy · 2010. Május. 7. (P), 10.24
A "select *" szerintem mindent lehoz, de lehet elnézem.

A megoldáshoz irasd ki a képernyőre a változók értékeit. Ha a $sor['password'] üres, akkor már tudod, hogy az adatlekérésnél van a hiba. Ha így van, akkor mysqladmin-ból add ki a parancsot és nézd meg mit ad vissza.

Egyébként nekem azt írja, hogy "Sikeres bejelentkezés" :) Bármire :)
5

Hoppá, igazad van, lehoz

csaba86 · 2010. Május. 7. (P), 12.17
Hoppá, igazad van, lehoz mindent.
4

SQL Injection

Poetro · 2010. Május. 7. (P), 10.51
És jó lenne escapelni is az SQL-nek átadott adatokat, ugyanis jelen formában ha azt adom meg felhasználónévnek, hogy akarmi' OR 1 akkor be fog léptetni :). Egy ugye abból adódik, hogy a lekérdezés ekkor a következő lesz:
SELECT * FROM videosmart WHERE username = 'akarmi' OR 1
Én kb. így csinálnám:
<?php
$kapcsolat = mysql_connect ('127.0.0.1', '...', '...');
mysql_select_db ('animefanblog');

if (!empty($_POST['username']) && !empty($_POST['password'])) {
  $username = $_POST['username'];
  $password = $_POST['password'];
   
  $parancs = sprintf("SELECT * FROM videosmart WHERE username = '%s' AND password = '%s'",
    mysql_real_escape_string($username), mysql_real_escape_string($password));
  $valasz = mysql_query($parancs);
  
  if ($sor = mysql_fetch_assoc($valasz)) {
    print "Sikeres bejelentkezés";
  }
  else {
    print "Sikertelen bejelentkezés";
  }
}

mysql_close($kapcsolat);
?>
Jah, és legközelebb nem add meg az adatbázisod felhasználó nevét, és jelszavát, mivel "senki" se kíváncsi rá ;).
7

jelen formában ha azt adom

kuka · 2010. Május. 7. (P), 16.17
jelen formában ha azt adom meg felhasználónévnek, hogy akarmi' OR 1 akkor be fog léptetni :)

Be fog lépni, ha az űrlapba beírt jelszó egyezik a MySQL természetes adatsorrendjében elsőnek szerepelő felhasználó jelszavával. Ez szerintem nem sokat segít egy támadónak.

De egy biztos: mielőbbi javítás szükséges.
8

Tapasztalatom szerint

solkprog · 2010. Május. 7. (P), 16.26
Tapasztalatom szerint az első rekord az "users"-táblában az esetek 90%-ban az (egyik) admin-é...
Másfelől:

admin' -- 
így meg tuti az admin felhasználóhoz lép be (nyilván ha admin-nak hívják)
10

Igen. Amennyiben a támadó

kuka · 2010. Május. 7. (P), 17.26
Igen. Amennyiben a támadó tudja az illető admin jelszavát. Amiért az adatbázis lekérdezés sérülékeny, azért a jelszó összehasonlítást a PHP script még elvégzi.

A súlyos biztonsági hiba az volna, ha a jelszó összehasonlítást nem a PHP végezné, hanem ugyanaz a sérülékeny SQL.
12

elnéztem

solkprog · 2010. Május. 7. (P), 19.53
én erre gondoltam:

$parancs = "SELECT * FROM videosmart WHERE username = '$username' AND pass='$pass'";
Sorry elnéztem. (pontosabban Poetro javított kódjára néztem csak rá)

Kalas: Poetro kódjával mi a bajod?
13

Átfogalmazom

Poetro · 2010. Május. 7. (P), 20.13
Akkor elegendő, ha valakinek eltalálod a jelszavát, és akkor be tudsz lépni valaki nevében.
Ekkor ugye: ' OR password='1234
De itt most nem is ez a lényeg, hanem hogy lyukak vannak, amiket mindenképpen foltozni kell.
6

a picsaxDD

Kalas · 2010. Május. 7. (P), 13.48
Ja, bocsi:DDDD istenem mekkora barom vagyokXD
ez már fáj
9

Nekünk meg a stílusod. Ez itt

deejayy · 2010. Május. 7. (P), 16.27
Nekünk meg a stílusod. Ez itt egy szakmai fórum, kérlek ne úgy kezeld, mintha MSN-en beszélnél a haveroddal.

Többiek nevében is köszönöm.
11

Konkrét kód

Kalas · 2010. Május. 7. (P), 19.24
Akkor valaki írja le legyetek szívesek a konkrét kódot amit be kell illesztenem az oldalamra.
Köszönöm szíves kedvességeteket.

Így jó lesz?