Autor | Zpráva | ||
---|---|---|---|
Owl_ Profil * |
#1 · Zasláno: 2. 9. 2014, 14:10:24
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; Edit: a také je vhodné, aby samotná funkce měla stejný název, který používáte pro její volání |
||
Owl_ Profil * |
#3 · Zasláno: 2. 9. 2014, 14:16:10
Vidíte, tohle mě nenapadlo. Většinou nepoužívám funkce, tohle je výjimka. Díky moc
|
||
Joker Profil |
#4 · Zasláno: 2. 9. 2014, 14:21:08
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 * |
#5 · Zasláno: 2. 9. 2014, 14:29:56
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é? |
||
Časová prodleva: 10 let
|
0