[ Cola @ 10.06.2010. 19:20 ] @
Pozdrav. Početnik sam u PHP programiranju ali sam ipak se odvažio da radim sajt sa njim pa sam odlučio da napravim sebi par pomoćnih skripti između kojih je i ova za rad sa mySql bazom. Code: <?php $user="***********"; $password="***********"; $database="***********"; function ExecuteQuery($p_query, $p_parametars) { global $user; global $password; global $database; try { $query = $p_query; $conn = mysql_connect('localhost', $user, $password) or die( mysql_error()); if (!$conn) { return null; } $db_selected = mysql_select_db($database, $conn); if (!$db_selected) { return null; } $query = ''; $temp = $p_query; foreach ($p_parametars as $key => $value) { $pKey = "#p" . $key . "#"; $pos = strpos($temp, $pKey); if($pos !== false) { // Dio pre parametra stavljamo u query. $query .= substr($temp, 0, $pos); //dodajemo zamjenjen parametar na query. $query .= mysql_real_escape_string($value); //u temp uzimamo ono što je nobrađeno. $temp = substr($temp, $pos + strlen($pKey)); } else { //nije nađen kay $pKey u tempu continue; } } //ako je nešto preostalo dodajemo na query. $query .= $temp; return mysql_query($query); } catch(Exception $e) { } return null; } ?> Naime kako ovo radi, tj koristi se. Primjer. Code: static function LoginUser($p_username, $p_password) { $parametars[0] = $p_username; $parametars[1] = MD5($p_password); $query = "SELECT * FROM Users WHERE username='#p0#' and password='#p1#'"; $sqlResult = ExecuteQuery($query, $parametars); ... Imao sam na cilj da se na jedinstven način konektujem na bazu, a istovremeno da se ne zamaram stalnom tim djelom koda koji bi se stalno ponavljao. Gledajući primjere za rešavanje SQL injection mislim da sam ga riješio. jer ako se pozove Code: LoginUser("Cola's", "test"); dobijem SQL query a sve zahvaljujući funkciji mysql_real_escape_string Code: SELECT * FROM Users WHERE username='Cola\'s' and password='098f6bcd4621d373cade4e832627b4f6' takođe sam izdvajao parametre da slučajno nebih replejsovao nešto što je korisnik prosledio Npr. za Code: LoginUser("Co#p1#la's#p1#", "test"); dobijem: Code: SELECT * FROM Users WHERE username='Co#p1#la\'s#p1#' and password='098f6bcd4621d373cade4e832627b4f6' Ako je ovo dobro imalo drago mi je da to neko iskoristi ali ako ima propusta takođe bi volio da mi ukaže na njih ![]() Gdje se na sajtu čuvaju parametri za pristup bazi? Jel nesigurno ovako u fajlu? Ako nije sigurno gde se to inače drži? Hvala [Ovu poruku je menjao Cola dana 10.06.2010. u 20:47 GMT+1] |