Autor Zpráva
BitaSk
Profil
Zdravím, prosím vás. Mám vrácených například 5 POST proměnných v poli user. Které následně ukládám do DB. Postačí mi následující kód pro zabezpečení proměnné při vložení do DB ? Například proměnná name

mysql_real_escape_string(htmlspecialchars(mb_convert_encoding($user['name'], 'UTF-8', 'UTF-8')));

Díky za odezvu.
Keeehi
Profil
BitaSk:
Ne nestačí. Tohle je dobré tak pro řetězce a ještě k tomu to není správně. Proti SQL injection to sice ochrání ale funkce htmlspecialchars tam při ukládání do DB nemá co dělat. Ta se má použít až při výpisu.

Ovšem pro čísla je toto escapování naprosto špatně protože útočník žádné apostrofy posílat nemusí.

Jak to dělat správně.

Funkce mysql_* jsou už zastaralé a budou v nových verzích odstraněny. Měl bys používat minimálně mysqli_* lépe však nějakou knihovnu která za tebe řeší i další věci. Třeba právě to správné escapování. Mohu doporučit třeba dibi.
BitaSk
Profil
Keeehi:
děkuji za reakci. Dobře mysql používám od doby kdy jsem se začal databáze učit. A co by jste mi doporučil, pokud mám hotový celí projekt v mysql ? Předělat do DIBI ? Děkuji za odpověď.
kzk_cz
Profil *
Lépe https://github.com/nette/database - dibi myslím už nebude do budoucna tolik vylepšovaná/používaná. Ale funguje skvěle, o tom žádná.
BitaSk
Profil
Dobře děkuji moc
Keeehi
Profil
Co doporučit je těžké říct když neznám ten projekt. Vzhledem k tomu, že to nejspíš stejně budeš muset opravovat kvůli té bezpečnosti bych asi doporučil to upravit s použitím dibi.

kzk_cz [#4]:
Nette database je taková trochu víc magičtější. Dá se s ní pracovat stejně jako s dibi avšak pokud už má hotovo, je to asi zbytečné.
BitaSk
Profil
ok, tak díky. Použiji DIBI

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