Autor Zpráva
Martin02
Profil
Ahoj,
potřebuju vkládat do mysql data z textového pole. Vše ok, ale když chci přidat uvozovku, nepřidá se vůbec nic. Jak mám tedy dávat uvozovky to buňky v mysql? Datový typ je text a kódování utf8_general_ci.

Děkuji
abc
Profil
Ošetři řetězec mysql_real_escape_string
Martin02
Profil
abc:
díky moc
juriad
Profil
Obecně, cokoli vkládáš do databáze bys měl prohnat tou odkázanou funkcí. Nikdy nevěř uživatelovi/útočníkovi.
Jedinou výjimkou jsou čísla, ale u nich si musíš být absolutně jistý, že to čísla jsou. U nich stačí přetypování, například: (int) $GET['cislo'].

Ukázka děravého přihlašování:
mysql_query("SELECT * FROM uzivatele WHERE jmeno='".$_POST['jmeno']."' AND heslo='".$_POST['heslo']."'";
Přihlašování lze snadno prolomit zadáním hesla:
' OR 1=1 --

Poznámka k otázce: je to ještě horší, následující vstupy ti také budou dělat problémy (bez ošetření): -- (dvě pomlčky), # (mřížka), /* (lomeno hvězdička).
Micruss
Profil
juriad:
Heslo zaheshovat nejlíp md5();
a Nick: mysql_real_escape_string a myslím si, že je dobře ošetřený vstup ;-)
Davex
Profil
Micruss:
Heslo zaheshovat nejlíp md5();
Bezpečnější by byl osolený hash sha1().

Přikládám odkazy na zajímavé čtení, kdyby to někoho zajímalo:
šifrování hesla
Registrace uživatele - Jak nejlépe zahashovat heslo?
Ochrana hesla saltom

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: