Přidej si svou IT školu do profilu a najdi spolužáky zde na síti :)
Avatar
HAPPY DAY
Člen
Avatar
HAPPY DAY:17.9.2012 16:20

ahoj mám problém. jde o tohle:
Warning: mysql_result() expects parameter 1 to be resource, boolean given in /data/web/vir­tuals/28888/vir­tual/www/login­.php on line 4

a kód na řádku 4 je:
$pocetzaznamu = mysql_result(mys­ql_query("SELECT COUNT(*) FROM users WHERE usermail = '".$_POST['ma­il']."' AND userpass = '".sha1($_POS­T["pass"])."'"), 0);

co je prosím za chybu předtím to fungovalo. potom jsem jen přidal CSS a hned to tohle vypsalo

Odpovědět 17.9.2012 16:20
Kdo pozdě chodí, sám sobě škodí (AUTOR: já)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na HAPPY DAY
David Čápka:17.9.2012 16:29

Ta query ti vrátila FALSE, čili se neprovedla a nelze z ní načíst pole. Otázka je proč, ale to já ti asi neřeknu. Zkus si vypsat ten příkaz a vložit ho do MyPHPAdmina. Možná máš vypnutou databázi, možná je tam překlep, neexistuje tabulka...

2 připomínky:

  1. Neescapuješ, to je velmi nebezpečné.
  2. mysql ovladač je deprecated,
Nahoru Odpovědět 17.9.2012 16:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na HAPPY DAY
David Čápka:17.9.2012 16:29

Jo a 3. připomínka, ten hash bez soli je také nedostačující.

Nahoru Odpovědět 17.9.2012 16:29
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
HAPPY DAY
Člen
Avatar
HAPPY DAY:17.9.2012 17:18

už jsem to vyřešil, asi to byla chyba editoru, což se mi občas stává a potom jsem se špatně připojil k databázi takže OK vše funguje

Nahoru Odpovědět 17.9.2012 17:18
Kdo pozdě chodí, sám sobě škodí (AUTOR: já)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na HAPPY DAY
David Čápka:17.9.2012 17:26

Pokud chceš být adminem webu jen ty, tak zapracuj mé připomínky.

Nahoru Odpovědět 17.9.2012 17:26
Miluji svou práci a zdejší komunitu, baví mě se rozvíjet, děkuji každému členovi za to, že zde působí.
Avatar
Kit
Redaktor
Avatar
Odpovídá na David Čápka
Kit:17.9.2012 21:13

Také koukám, že si Michal Doubek (HAPPY DAY) koleduje o SQL injection.

Nahoru Odpovědět  +1 17.9.2012 21:13
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
HAPPY DAY
Člen
Avatar
HAPPY DAY:18.9.2012 12:47

No z toho co jsem si přečetl mi přijde, že nebezpečí hrozí jen když používám $_GET ale já používám $_POST

Nahoru Odpovědět 18.9.2012 12:47
Kdo pozdě chodí, sám sobě škodí (AUTOR: já)
Avatar
Kit
Redaktor
Avatar
Odpovídá na HAPPY DAY
Kit:18.9.2012 13:12

Docela zábavné čtení. Je úplně jedno, jestli použiješ GET nebo POST. Injection se dá udělat do obojího.

Nahoru Odpovědět 18.9.2012 13:12
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:22.9.2012 20:58

njn,to víš no,je chytřejší než ty....:D :D TO přece není možný udělat injection přes POST :D

btw. [me|]321[/me|­],pošli odkaz na ten web,myslím že ti rádi předvedeme ukázku :D :D

 
Nahoru Odpovědět 22.9.2012 20:58
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:22.9.2012 21:11

Ale jinak je v pořádku, že to posílá přes POST. Jen je to nutné ošetřit před vložením do SQL a po přijetí udělat přesměrování stránky.

Také je důležité v databázi nemít uživatelská hesla, ale jen jejich hashe. Pokud možno osolené.

Nahoru Odpovědět 22.9.2012 21:11
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:22.9.2012 21:13

Jj,já také používám post... Escapuji vše,i položky v SELECTu

....hesla ? hashe ? osolit ? :D

 
Nahoru Odpovědět 22.9.2012 21:13
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
Daniel Vítek:22.9.2012 21:13

Vím co je heslo ale ten zbytek nevím :D

 
Nahoru Odpovědět 22.9.2012 21:13
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:22.9.2012 21:21

Osobně neescapuji nic, používám prepared statements. Tím pro mne escapování skončilo. Takové SQL dotazy jsou mnohem hezčí a přehlednější.

Určitě jsi slyšel o funkcích md5(), sha1(), sha256() apod. K heslu přidáš nějaký řetězec (sůl), zašifruješ vybranou funkcí (hash) a do databáze jen uložíš výsledek (string). Takové heslo není současnými prostředky možné dešifrovat.

Nahoru Odpovědět 22.9.2012 21:21
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:22.9.2012 21:23

a když se někdo bude chtít přihlásit tak jak to dešifruje ? :D

 
Nahoru Odpovědět 22.9.2012 21:23
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:22.9.2012 21:25

Nijak. Nejde to. Heslo, které uživatel zadá, se zašifruje stejným postupem a porovnají se výsledky. Pokud jsou totožné, je to OK.

Je to standardní osvědčený postup používaný v profesionálních aplikacích.

Editováno 22.9.2012 21:29
Nahoru Odpovědět 22.9.2012 21:25
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Kit
Daniel Vítek:22.9.2012 21:26

aháá :)

 
Nahoru Odpovědět 22.9.2012 21:26
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na Daniel Vítek
Daniel Vítek:22.9.2012 21:26

to je chytrý :)

 
Nahoru Odpovědět 22.9.2012 21:26
Avatar
Kit
Redaktor
Avatar
Odpovídá na Daniel Vítek
Kit:22.9.2012 22:06

Teď koukám, že ten hash (i když bez soli) tam už je. No co, přehlédl jsem se.

Nahoru Odpovědět 22.9.2012 22:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 18 zpráv z 18.