Autor Zpráva
David1256
Profil
Dobrý den,

přidáván do databáze přes inputy a php různá data. Jenže když se v textu objeví např. ' (uvozovka), tak ji php interpretuje jako část kódu, proto jsem využil funkci var_export(), která přes tyto uvozovky přidává zpětná lomítka, ale potřeboval bych ještě nějakou funkci, která by dávala zpětná lomítka i před závorky. Existuje taková?

Děkuji.
panther
Profil
David1256:
pokud ukládáš do DB, ukládej textové hodnoty skrz mysql_real_escape_string.
David1256
Profil
Díky moc, funguje. U této funkce jsem si přečetl i možnost zneužití, pokud nejsou vstupní data například u inputu u přihlašování ošetřena touto funkcí tak, že se může využít tzv. sql injection útoku. Když mám použit skript na přihlašování ze zdejšího faq topiku, tak mi to je i tak jedno ne? Když tam jsou vstupní data ošetřena hashováním AND password = sha1('$password'), tak může nastat jen chyba skriptu, ale nanapadá mě žádný vstup v $password, který by mohl dovolit přihlásit se neplatnému uživateli jako by to mu bylo např. když by tam nebyla ta funkce sha1 viz.
<?php
// We didn't check $_POST['password'], it could be anything the user wanted! For example:
$_POST['username'] = 'aidan';
$_POST['password'] = "' OR ''='";

// Query database to check if there are any matching users
$query = "SELECT * FROM users WHERE user='{$_POST['username']}' AND password='{$_POST['password']}'";
mysql_query($query);

// This means the query sent to MySQL would be:
echo $query;
?>
Už jsem to ošetřil tím mysql_real_escape_string, ale i tak jen tak hypoteticky by přihlášení přes sql injection na webu, který má přihlašovací skript postavený takto AND password = sha1('$password') nebylo možné ne? Nebo jde to snad nějak ovlivnit hodnotou $password, když je v tomto případě stejně všechno uzavřeno ve funkci sha1?

Děkuji.
panther
Profil
David1256:
POST['username'] musí být ošetřeno, hash je z pohledu znaků, ze kterých se skládá, bezpeč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