Modified: phpdoc/ro/trunk/reference/mysql/book.xml =================================================================== --- phpdoc/ro/trunk/reference/mysql/book.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/reference/mysql/book.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,18 +1,26 @@ - + - - - MySQL + + API originale ale MySQL + Mysql &reftitle.intro; + Această extensie este învechită începând cu PHP 5.5.0, și nu este recomandată + pentru scrierea codului nou, deoarece va fi eliminată în viitor. În loc, + folosiți extensia mysqli sau + PDO_MySQL. A se vedea de asemenea + Privire de ansamblu asupra MySQL API + pentru ajutor suplimentar în alegerea unui API MySQL. + + Aceste funcții vă permit accesarea serverelor de baze de date MySQL. Informații suplimentare despre MySQL pot fi găsite la &url.mysql;. @@ -21,14 +29,11 @@ Documentația pentru MySQL poate fi găsită la &url.mysql.docs;. - - Pentru o privire de ansamblu asupra termenelor de conectare la baze de date - și a produselor accesați . - &reference.mysql.setup; + &reference.mysql.changelog; &reference.mysql.constants; &reference.mysql.examples; &reference.mysql.reference; Modified: phpdoc/ro/trunk/reference/mysql/configure.xml =================================================================== --- phpdoc/ro/trunk/reference/mysql/configure.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/reference/mysql/configure.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,7 +1,7 @@ - +
&reftitle.install; @@ -16,7 +16,7 @@ Cu toate că această extensie MySQL este compatibilă cu MySQL 4.1.0 și versiunile ulterioare, ea nu susține funcționalitatea suplimentară oferită de aceste versiuni. Pentru aceasta utilizați extensia - MySQLi. + MySQLi. Dacă doriți să instalați extensia mysql împreună cu extensia mysqli, trebuie @@ -25,51 +25,58 @@
Instalarea pe sisteme Linux -
- PHP 4 - - Opțiunea este activată - implicit. Acest comportament implicit poate fi dezactivat cu opțiunea de - configurare . - Dacă MySQL este activat fără specificarea căii către directorul DIR de - instalare al MySQL, PHP va utiliza bibliotecile-client MySQL încorporate. - - - Utilizatorii care rulează alte aplicații care utilizează MySQL (spre - exemplu, auth-mysql) nu ar trebui să utilizeze biblioteca - furnizată, dar să specifice calea către directorul de instalare al MySQL, - în felul următor: - . - Aceasta va forța PHP să utilizeze bibliotecile-client instalate de MySQL, - evitând în acest fel orice conflicte. - -
-
- PHP 5.0.x, 5.1.x, 5.2.x - - MySQL nu este activat implicit, și nici biblioteca MySQL nu este - furnizată cu PHP. Citiți acest - FAQ pentru a afla detalii despre cauze. Utilizați opțiunea de - configurare pentru a - include susținerea MySQL. Puteți descărca antete și biblioteci - de pe MySQL. - -
-
- PHP 5.3.0+ - - În PHP 5.3.0 și ulterior extensiile bazelor de date MySQL utilizează - implicit driver-ul nativ MySQL. - Aceasta înseamnă că biblioteca-client MySQL (libmysql) - nu mai este necesară pentru a susține conexiuni la baze de date MySQL. - Extensiile mysql, mysqli și - PHP_PDO_MYSQL sunt toate activate implicit în PHP - 5.3.0+, și toate utilizează implicit driver-ul nativ MySQL. În orice caz - nu sunt necesari alți pași de instalare pentru a utiliza aceste extensii, - cu toate că ar fi bine să stabiliți unele preferințe în - php.ini în dependență de necesitățile dumneavoastră. - -
+ + Notă: [DIR] este calea către fișierele bibliotecilor-client + MySQL (antetele și bibliotecile), care pot fi descărcate + din MySQL. + + + matricea de suport la compilare a ext/mysql + + + + &Version; PHP + &Default; + &ConfigureOptions;: mysqlnd + &ConfigureOptions;: libmysqlclient + &Changelog; + + + + + 4.x.x + libmysqlclient + &NotAvailable; + pentru a dezactiva + MySQL este activat implicit, bibliotecile-client MySQL sunt încorporate + + + 5.0.x, 5.1.x, 5.2.x + libmysqlclient + &NotAvailable; + + + MySQL nu este activat implicit și bibliotecile-client MySQL + nu mai sunt încorporate + + + + 5.3.x + libmysqlclient + + + mysqlnd este acum disponibil + + + 5.4.x + mysqlnd + + + mysqlnd este acum utilizat implicit + + + +
@@ -118,12 +125,12 @@
- PHP 5.3.0+ - - Vă rugăm să vă referiți la - aceste note în - legătură cu instalarea susținerii MySQL în PHP 5.3.0 și ulterior. - + PHP 5.3.0+ + + Driver-ul MySQL Înnăscut este activat + implicit. Includeți php_mysql.dll, iar libmysql.dll + nu mai este necesar sau folosit. +
@@ -141,7 +148,7 @@ Dacă aveți nevoie se seturi de caractere ce diferă de latin (implicit), trebuie să instalați biblioteca - externă libmysql compilată pentru a susține setul de caractere dorit. + externă libmysqlclient compilată pentru a susține setul de caractere dorit. Modified: phpdoc/ro/trunk/reference/mysql/constants.xml =================================================================== --- phpdoc/ro/trunk/reference/mysql/constants.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/reference/mysql/constants.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,7 +1,7 @@ - + &reftitle.constants; @@ -21,20 +21,20 @@ - + MYSQL_CLIENT_COMPRESS Utilizează protocolul de compresie - + MYSQL_CLIENT_IGNORE_SPACE Permite spațiu după denumirea funcției - + MYSQL_CLIENT_INTERACTIVE Permite o inactivitate cu durata de interactive_timeout secunde (în loc de wait_timeout) înainte de a închide conexiunea. - + MYSQL_CLIENT_SSL Utilizează criptarea SSL. Acest fanion este disponibil numai începând cu versiunea 4.x sau ulterioară a bibliotecii-client MySQL. @@ -61,21 +61,21 @@ - + MYSQL_ASSOC Coloanele sunt întoarse într-un tablou având în calitate de indice denumirea câmpului. - + MYSQL_BOTH Coloanele sunt întoarse într-un tablou având atât un indice numeric, cât și denumirea câmpului în calitate de indice. - + MYSQL_NUM Coloanele sunt întoarse într-un tablou având un indice numeric către Modified: phpdoc/ro/trunk/reference/mysql/examples.xml =================================================================== --- phpdoc/ro/trunk/reference/mysql/examples.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/reference/mysql/examples.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,12 +1,13 @@ - + &reftitle.examples;
+ Exemplu de ansamblu pentru extensia MySQL Acest exemplu simplu demonstrează connectarea, executarea unei interpelări, afișarea rândurilor rezultante și deconectarea de la o bază de date MySQL. Modified: phpdoc/ro/trunk/reference/mysql/functions/mysql-escape-string.xml =================================================================== --- phpdoc/ro/trunk/reference/mysql/functions/mysql-escape-string.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/reference/mysql/functions/mysql-escape-string.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,13 +1,23 @@ - + mysql_escape_string Escapeaza un string pentru fi folosit in mysql_query + + + &mysql.alternative.note; + + mysqli_escape_string + PDO::quote + + + + &reftitle.description; Modified: phpdoc/ro/trunk/reference/mysql/functions/mysql-field-seek.xml =================================================================== --- phpdoc/ro/trunk/reference/mysql/functions/mysql-field-seek.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/reference/mysql/functions/mysql-field-seek.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,7 +1,7 @@ - + @@ -9,6 +9,17 @@ Stabilește indicatorul rezultatului la deplasamentul câmpului specificat + + + &mysql.alternative.note; + + mysqli_field_seek + + PDOStatement::fetch utilizând parametri opționali + + + + &reftitle.description; Modified: phpdoc/ro/trunk/reference/mysql/functions/mysql-get-client-info.xml =================================================================== --- phpdoc/ro/trunk/reference/mysql/functions/mysql-get-client-info.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/reference/mysql/functions/mysql-get-client-info.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,14 +1,24 @@ - + - + mysql_get_client_info Obține informația clientului MySQL + + + &mysql.alternative.note; + + mysqli_get_client_info + PDO::getAttribute + + + + &reftitle.description; Modified: phpdoc/ro/trunk/reference/mysql/ini.xml =================================================================== --- phpdoc/ro/trunk/reference/mysql/ini.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/reference/mysql/ini.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,7 +1,7 @@ - +
&reftitle.runtime; @@ -12,14 +12,20 @@ - Denumire - Valoare implicită - Se poate schimba - Istoric schimbări + &Name; + &Default; + &Changeable; + &Changelog; - + + mysql.allow_local_infile + "1" + PHP_INI_SYSTEM + + + mysql.allow_persistent "1" PHP_INI_SYSTEM @@ -89,8 +95,20 @@ - + + mysql.allow_local_infile + integer + + + + Permite accesul, din perspectiva PHP, la fișiere locale cu interpelări LOAD DATA + + + + + + mysql.allow_persistent boolean Modified: phpdoc/ro/trunk/security/database.xml =================================================================== --- phpdoc/ro/trunk/security/database.xml 2014-06-19 14:29:35 UTC (rev 333845) +++ phpdoc/ro/trunk/security/database.xml 2014-06-19 15:02:58 UTC (rev 333846) @@ -1,10 +1,10 @@ - + - + Securitatea Bazelor de Date @@ -118,10 +118,9 @@ În cazul datelor care trebuie să fie confidențiale, a căror expunere nu este necesară în nici un context, procedeul hashing poate fi luat în - considerare. Cel mai cunoscut exemplu este stocarea hash-ului MD5 al unei - parole în baza de date, în loc de stocarea parolei înseși. Vedeți de - asemenea și funcțiile crypt și - md5. + considerare. Cel mai cunoscut exemplu este stocarea hash-ului criptografic + al unei parole în baza de date, în loc de stocarea parolei înseși. A se + vedea de asemenea și funcția crypt. Utilizarea hash-ului pentru parole @@ -129,20 +128,22 @@ md5($password) +// stocarea hash-ului parolei +// $random_chars obținute de ex. folosind /dev/random $query = sprintf("INSERT INTO users(name,pwd) VALUES('%s','%s');", - pg_escape_string($username), md5($password)); + pg_escape_string($username), + pg_escape_string(crypt($password, '$2a$07$' . $random_chars . '$'))); $result = pg_query($connection, $query); -// query - verificare dacă utilizatorul a introdus parola corectă -$query = sprintf("SELECT 1 FROM users WHERE name='%s' AND pwd='%s';", - pg_escape_string($username), md5($password)); -$result = pg_query($connection, $query); +// verificare dacă utilizatorul a introdus parola corectă +$query = sprintf("SELECT pwd FROM users WHERE name='%s';", + pg_escape_string($username)); +$row = pg_fetch_assoc(pg_query($connection, $query)); -if (pg_num_rows($result) > 0) { - echo 'Bine ai venit, $username!'; +if ($row && crypt($password, $row['pwd']) == $row['pwd']) { + echo 'Bun venit, ' . htmlspecialchars($username) . '!'; } else { - echo 'Autentificarea a eșuat pentru $username.'; + echo 'Autentificarea a eșuat pentru ' . htmlspecialchars($username) . '.'; } ?> @@ -239,8 +240,7 @@ @@ -286,22 +286,21 @@ Însă un utilizator rău voit poate introduce - ' or uid like'%admin%'; -- în locul + ' or uid like'%admin% în $uid pentru a schimba parola utilizatorului admin, sau pur și simplu setează valoarea $pwd în - "hehehe', admin='yes', trusted=100 " (cu spațiu la - sfârșit) pentru a obține mai multe privilegii. În acest caz interpelarea - ar arăta în felul următor: + hehehe', trusted=100, admin='yes pentru a obține mai + multe privilegii. În acest caz interpelarea ar arăta în felul următor: @@ -334,8 +333,8 @@ @@ -356,18 +355,31 @@ poate fi vulnerabil într-o manieră asemănătoare. + + + Un exemplu amuzant legat de probleme cu injectări SQL + + + + + Imagine oferită de xkcd + Tehnici de evitare - Puteți spune că un atacator trebuie să dețină informații despre baza de - date și schema acesteia în majoritatea exemplelor. În majoritatea - cazurilor așa este, dar nu se știe niciodată cum poate fi descoperită - aceasta, în mod direct sau indirect. Dacă folosiți un soft open source, - sau alt pachet disponibil publicului larg (content management system sau - forum), atacatorii pot duplica cu ușurință codul dumneavoastră. De - asemenea un risc îl reprezintă și designul necorespunzător al bazei de - date. + Cu toate că este evident că un atacator trebuie să posede cel puțin careva + cunoștințe în privința arhitecturii bazei de date pentru a desfășura un + atac cu succes, obținerea acestei informații este deseori foarte simplă. + Spre exemplu, dacă o bază de date face parte dintr-un pachet software cu + sursă deschisă, sau disponibilă publicului larg, cu o instalare implicită, + această informație este absolut deschisă și disponibilă tuturor. Această + informație poate de asemenea să fie divulgată de un cod-sursă închis - + chiar dacă este codificat, camuflat sau compilat - și chiar de propriul + dumneavoastră cod prin afișarea mesajelor de eroare. Alte metode includ + utilizarea numelor răspândite pentru tabele și coloane. Spre exemplu, un + formular de login care utilizează un tabel 'users' cu denumirile coloanelor + 'id', 'username' și 'password'. Aceste atacuri sunt de obicei bazate pe exploatarea codului scris de @@ -388,6 +400,14 @@ + Utilizați interpelări preparate cu variabile atașate. Ele sunt oferite + de PDO, + de MySQLi + și de alte biblioteci. + + + + Verificați dacă un input conține tipul de date corect. PHP are o varietate de funcții de validare, de la cele mai simple, care pot fi găsite în Funcții @@ -400,7 +420,7 @@ Dacă aplicația așteaptă un input numeric, încercați să verificați - datele cu funcția is_numeric, sau schimbați tipul + datele cu funcția ctype_digit, sau schimbați tipul variabilei utilizând funcția settype, sau folosiți reprezentația numerică prin sprintf. @@ -425,17 +445,15 @@ - Aplicați asupra fiecărei valori non-numerice furnizate de utilizator, - ce va fi transmisă bazei de date, funcția 'string escape' specifică - fiecărei baze de date (de ex. - mysql_real_escape_string, - sqlite_escape_string, etc.). Dacă baza de date nu - posedă un mecanism specific de 'string escape', pot fi utile funcțiile - addslashes și str_replace (în - dependență de tipul bazei de date). - Vedeți primul exemplu. - Dupa cum arată exemplul, adăugarea ghilimelelor în partea statică a - interpelării nu este de ajuns, făcând-o susceptibilă la atacuri. + Dacă nivelul bazei de date nu susține atașarea variabilelor, atunci + filtrați fiecare valoare non-numerică furnizată de utilizator transmisă + bazei de date cu ajutorul funcției 'string escape' specifică fiecărei + baze de date (de ex. mysql_real_escape_string, + sqlite_escape_string, etc.). Funcții generice precum + addslashes sunt utile doar în medii foarte specifice + (de. ex. MySQL cu un set de caractere single-byte cu opțiunea + NO_BACKSLASH_ESCAPES deconectată), de aceea este mai + bine să fie evitate.