Autor Zpráva
Owl_
Profil *
Zdravím,
píšu si jednodušší aplikaci, kde potřebuji zajistit hlavně ochranu proti SQL-Injection. Přemýšlel jsem nad funkcí, která by to obstarávala, viz. kód níž. S mysql vše fungovalo, ale po přepisu na mysqli mám potíže ochranu rozjet.

Takhle volám funkci :
sql_ochrana($_POST['username']);

Samotná funkce
function db_escape($string) { 
    return mysqli_real_escape_string($mysql_connect, $string);
} 

Problém je, že pokud takhle třeba odešlu heslo, nedojde k přihlášení. Pokud se vrátí čistý $str bez použití escapování, přihlášení funguje. $mysql_connect funguje, používám ji i jinde a bez potíží. Nevíte, kde by mohl být problém? Díky moc za odpovědi
Kajman
Profil
Owl:
$mysql_connect funguje, používám ji i jinde a bez potíží.

A v jiných funkcích také nemáte
global $mysql_connect;
a přesto to funguje?

Edit: a také je vhodné, aby samotná funkce měla stejný název, který používáte pro její volání
Owl_
Profil *
Vidíte, tohle mě nenapadlo. Většinou nepoužívám funkce, tohle je výjimka. Díky moc
Joker
Profil
Owl:
To různé pojmenování funkcí je schválně (sql_ochrana, db_escape)?

A když odbočím, připadá mi zbytečné vyrábět alias pro escapovací funkci databáze. V kontextu závislém na typu databáze se jiná funkce stejně používat nebude a mimo kontext závislý na typu databáze by zas escapování pro databázi nemělo být vůbec potřeba.

Problém je, že pokud takhle třeba odešlu heslo, nedojde k přihlášení.
Tak v první řadě doufám, že v databázi není uložené přímo heslo, ale nějaký hash hesla.
Jinak heslo snad ani není třeba escapovat, pokud se s databází porovnává hash, výstupy běžných hashovacích funkcí neobsahují nebezpečné znaky.
Owl_
Profil *
Joker
Takhle, když jsem to psal, neopisoval jsem kód, takže zde jsem funkce nedopatřením pojmenoval jinak. Co se hesla týče, použil jsem ho pro příklad. Heslo ukládám se "saltem" na začátku a na konci hashované pomocí sha512, je to dostatečné?

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:

0