Citate magice, scăpând caractere speciale de date de intrare în php

Caracteristicile de asigurare a securității interogărilor SQL în contextul unor astfel de caracteristici ale PHP ca citate magice, care scapă automat de caracterele speciale ale datelor de intrare. Dezactivați opțiunile pentru citarea magică.







"Datele trebuie stocate în baza de date" - în opinia mea, acesta este unul dintre principiile evidente ale programării. De ce să chinuiți și să reinventezi roata, dacă oamenii inteligenți s-au îngrijit că nu ne străduim? Putem avea grijă numai de securitatea interogării SQL, de exemplu: prin scăparea de caractere speciale.

Deoarece vorbim despre o bază de date precum MySQL, cea mai convenabilă și convenabilă modalitate este de a folosi funcția mysql_real_escape_string (). care generează evadări de caractere speciale în ceea ce privește codificarea conexiunii. exemplu:

$ link = mysql_connect ("localhost", "root", "parola") sau muri (mysql_error ());
$ query = sprintf ("SELECT * FROM utilizatori WHERE user = '% s' și password = '% s'",
mysql_real_escape_string ($ user),
mysql_real_escape_string ($ password));

Caracterele speciale ale valorilor variabilelor $ user și $ password vor fi scoase și înlocuite în șirul de interogare atribuit variabilei $ interogare.

Cu toate acestea, toate acestea sunt versuri. Întrebarea devine oarecum mai interesantă atunci când vine vorba despre o astfel de caracteristică a PHP ca și citate magice.

Citate magice (citate magice englezești) - screening forțat al datelor primite, valori ale variabilelor globale: $ _REQUEST. $ _GET. $ _POST și $ _COOKIE. pentru a asigura siguranța lucrului cu interogările SQL.







Acest tip de securitate este destul de îndoielnic. Această caracteristică a PHP este considerată învechită, iar în cea de-a șasea versiune nu va mai fi. În același timp, merită să luăm în considerare această caracteristică destul de comună a versiunilor mai vechi de PHP și pre-curățarea valorilor variabilelor globale de la slash-uri suplimentare (\) utilizând aceeași funcție stripslashes (). exemplu

$ user = $ _POST ['utilizator'];
$ password = $ _POST ['parola'];
dacă (get_magic_quotes_gpc ()) $ user = stripslashes ($ user);
$ password = stripslashes ($ password);
>

După cum puteți vedea, această opțiune este destul de incomodă. Desigur, cu citate magice incluse. Puteți înlocui valoarea variabilelor direct în interogarea SQL. Cu toate acestea, pentru a afișa valoarea în aceeași formă, va trebui să verificați și, dacă este necesar, să curățați linia.

Cea mai simplă și mai bună opțiune aici ar fi abilitatea de a dezactiva citatele magice. Puteți face acest lucru într-unul din următoarele moduri:

  1. În fișierul php.ini, setați magic_quotes_gpc la Off. exemplu:
magic_quotes_gpc = Oprit
  • În fișierul .htaccess, scrieți linia: php_flag magic_quotes_gpc Oprit
  • Se spune că există o funcție set_magic_quotes_gpc (). În documentația PHP, nu este descrisă și nu funcționează pentru mine. Cel mai probabil este un fals.
  • Dacă nu vă convine nici una dintre opțiunile propuse, puteți folosi "cârje", care, dacă este necesar, pot elimina variabilele corespunzătoare. exemplu:

    dacă (get_magic_quotes_gpc ()) $ _REQUEST = array_map ('stripslashes', $ _REQUEST);
    $ _GET = array_map ('stripslashes', $ _GET);
    $ _POST = array_map ('stripslashes', $ _POST);
    $ _COOKIE = array_map ('stripslashes', $ _COOKIE);
    >

    Saloane de înfrumusețare în orașul dvs. la salonul SPA. Secretele de îngrijire de sine.







    Trimiteți-le prietenilor: