Túlzásba vitt escape?
A saját készítésű php-mysql weboldalam php kódját elkezdtem optimalizálni, ami magában foglalja a fölösleges php utasítások eltávolítását. Először nem volt szempont a gyorsaság, csak azt akartam, hogy ne lehessen feltörni az adatbázist. Úgy érzem sok helyen túlzásba vittem a mysql_real_escape_string használatát, mert eddig biztos ami biztos alapon írtam mindenhová, amikor csak hozzányúltam az adatbázishoz.
Van egy űrlap mezőt ellenőrző kódom.
Leegyszerűsítve így néz ki:A kérdés, hogy biztonsági szempontból fölösleges-e a mysql_real_escape_string-et elhelyezni ott?
Elvileg enélkül sem lehetne pl. egy mysql injection-t csinálni, mert a ^[A-Za-z0-9]{4,12}$ feltételnek nem felelne meg egy ilyen rosszindulatú karatersorozat. Vagy mégis?
■ Van egy űrlap mezőt ellenőrző kódom.
Leegyszerűsítve így néz ki:
if (ereg("^[A-Za-z0-9]{4,12}$",$_POST["username"])) {
$con = mysql_connect($mysqlhost,$mysqlusername,$mysqlpassword);
mysql_select_db($mysqldatabase, $con);
$username = mysql_real_escape_string($_POST["username"]);
$exist_user = mysql_query("SELECT * FROM users WHERE username='$username'");
if (mysql_num_rows($exist_user) == 1) $username_validate = "existing_username";
else $username_validate = "OK";
mysql_close();
}
else $username_validate = "wrong_chars";
Elvileg enélkül sem lehetne pl. egy mysql injection-t csinálni, mert a ^[A-Za-z0-9]{4,12}$ feltételnek nem felelne meg egy ilyen rosszindulatú karatersorozat. Vagy mégis?
Nem
Ajánlom még a mysql értékek