Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc
Comunitatea PHP Romania
 

Sql injection attack
Vezi mesajul original

 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Subiectul anterior :: Subiectul următor  
Autor Mesaj
w31rd0



Data înscrierii: 15/Mar/2004
Mesaje: 165
Locație: Timisoara

Trimis: Lun Ian 24, 2005 10:48 am    Titlul subiectului: Sql injection attack  

Buna,
Vreau sa aduc in discutie (sper ca am postat unde trebuie)


http://docs.php.net/en/security.database.html#security.database.sql-injection

intrebaera mea legata de acest subiect este voi cum tratati datele, folositi vreo clasa anume gen:

http://www.phpclasses.org/browse/package/1341.html

Aveti recomandari legate de o anumita clasa free, intreab asta pt ca am mao folosit clase de pe phpclasses cel putin si a trebuit sa modific codul pentru a o optimiza asa cum aveam eu nevoie, am incercat sa discut cu autorul, dar nu am primit nici un raspuns.

mersi,

bye
Sus  
aurelian



Data înscrierii: 01/Iun/2003
Mesaje: 833
Locație: Bucuresti

Trimis: Lun Ian 24, 2005 11:49 am    Titlul subiectului:  

eu folosesc PEAR::DB si functia escapeSimple():
http://pear.php.net/manual/en/package.database.db.db-common.escapesimple.php

Citat:
DB_common::escapeSimple() -- Escapes a string according to the current DBMS's standards

e un lucru important ce imi asigura si portabilitate.
Sus  
arond



Data înscrierii: 11/Mar/2004
Mesaje: 580
Locație: 127.0.0.1

Trimis: Lun Ian 24, 2005 11:51 am    Titlul subiectului:  

Pentru MySQL solutia este, fara discutie, mysql_escape_string/mysql_real_escape_string (http://ro.php.net/mysql_escape_string).

Ideal este ca accesul la baza de date sa se faca printr-un nivel suplimentar de abstractizare (o clasa care sa ofere functionalitatea SQL necesara aplicatiei). Iar problema rezolvarii SQL injection devine problema acestui nivel de abstractizare.

Un exemplu, in care datele manipulate de un query SQL se insereaza folosind sintaxa folosita de Pear:DB (? in query va fi inlocuit cu mysql_escape_string($argument) iar ! va fi inlocuit cu $argument):

an style="color: #000000"><?php class Database {   ...   function fetchAll($query)   {     // get the arguments     $arguments = array_slice(func_get_args(), 1);     // get the query parts      $parts = preg_split('/([?!]+)/ius', $query, -1, PREG_SPLIT_DELIM_CAPTURE);          // recompose the query     $sql = '';     foreach ($parts as $part)       if ($part == '?')         $sql .= mysql_escape_string(array_shift($arguments));       else       if ($part == '!')         $sql .= (string)array_shift($arguments);       else         $sql .= $part;     // run the query     $query_h = mysql_query($sql);     ...   } } ... 
Iar asta se poate folosi cam asa:
an style="color: #000000"><?php ... $db = &new Database(); ... $records = $db->fetchAll('SELECT * FROM table WHERE login = ? AND password = ?', $_POST['login'], $_POST['password']); .... 

Numa' bune.
Sus  
octavian.p



Data înscrierii: 10/Feb/2005
Mesaje: 10

Trimis: Joi Feb 10, 2005 10:33 am    Titlul subiectului:  

pana la clase complicate trebuie restrictionate drepturile userului care ruleaza respectiva aplicatie ... asta ptr situri

Ex:
am aplicatia forum.phpromania cu
bd: forum
user: forum

drepturi: minimul necesar DOAR ptr baza de date FORUM ... select, insert, update, etc

pentru aplicatii gen phpmyadmin depinde de gusturi
Sus  
PHPRomania Bot
Bot Member


Data înscrierii: 27/Dec/2007
Mesaje: 1
Locaţie: Server Google
Trimis: Mie Dec 26, 2007 7:01 pm   Titlul subiectului: Ad  

Sus  
 
       Pagina de start a forumului Forum PHP Romania - Discutii despre PHP, MySQL, Javascript, AJAX, etc -> MySQL
Pagina 1 din 1


Powered by phpBB 2.0.22 © 2001, 2002 phpBB Group
Varianta în limba română: Romanian phpBB online community