Autor Zpráva
BuGeR
Profil
Dobré odpoledne.
Chtěl bych se zeptat, používam místo mysql_query vlastní funkci, tzv. lfquery:
function lfquery($dotaz) {
	$result = mysql_query($dotaz);
	if(!$result) { echo mysql_error(); return (false); }
	else { return ($result); }
}

Dala by se tato funkce ošetřit-abych nemusel ošetřovat všechny vstupy, proti útoku hackera ? Např. pomocí regularních výrazu pro UPDATE, INSERT INTO apod.
Děkuji..
Mufna
Profil
Já používám ještě jednu funkci pro ošetření vstupů:
  function escape($str) {
    $str = trim($str);
    if(!is_numeric($str)) {
        $str = sprintf("%s", mysql_real_escape_string($str));
    }
    return $str;
  }


Pak bys to musel u vstupu používat např takto:
$result = lfquery ("UPDATE tabulka WHERE radek = '" . escape($vstup) . "'");


Možná by funkce escape() šla zabudovat do té tvojí funkce (nevím, nezkoušel jsem to)
bohyn
Profil
BuGeR:
To je takovej problém ošetřit každou proměnnou zvlášť? Regulár ti na to nepomůže.

Mufna:
OMG co to máš za funkci? mysql_real_escape_string() ti nestačí?
Lamicz
Profil
bohyn:
Ta fce je nahodou chytra, protoze kdyz uz ma obaleny mysql_query a ted obali i mysql_real_escape_string, tak prepsanim techto fci muze pouzit jinou DB bez zasahu do kodu (samozrejme za predpokladu, ze je kompatibilni SQL, coz u jednoduchych SELECTu, INSERTu a UPDATEu vestinou je), je to vlastne primitivni DB layer ;)
bohyn
Profil
Lamicz:
Tak na BuGeRově funkci se mi nelíbí dvě věci:
- vypisuje chybové hlášky do výstupu. To je sice hezké pro testování, ale k uživatelům by se to dostat nemělo. Mělo by to testovat jestli je zapnutý error_reporing nebo tak něco.
- má tam 2x return (navíc zcela zbytečně)

A na Mufnyho funkci se mi nelíbí ten trim() a záhadné použití sprintf().

Pokud někdo potřebuje nezávislost na DB enginu tak na to tu máme PDO které nabízí celkem slušnou sbírku driverů

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