Mágikus idézi szűrésére speciális szimbólumok bevitele php

Jellemzői SQL-lekérdezések biztonságának biztosítása keretében olyan funkciók, mint a PHP magic quotes, speciális karakterek automatikusan bekerülnek pajzs. Opciók ki mágikus idézet.

„Az adatok között kell tárolni az adatbázisban” - véleményem szerint az egyik nyilvánvaló programozási elveket. Miért újra feltalálni a kereket, és a fájdalom a szülés, ha az intelligens emberek gondoskodott, hogy nem vagyunk feszült? Mi csak vigyázni a biztonsági SQL-lekérdezés, mint például: szűrés speciális karaktereket.

Mivel ez lesz körülbelül egy adatbázist, a MySQL, a legmegfelelőbb és kényelmes a használata mysql_real_escape_string () függvényt. amely bemutatja a árnyékolás vegyületet a speciális karakterek kódoló. például:

$ Link = mysql_connect ( 'localhost', 'root', 'jelszó') or die (mysql_error ());
$ Query = sprintf ( "SELECT * FROM felhasználók WHERE user = '% s' AND password = '% s'",
mysql_real_escape_string ($ user)
mysql_real_escape_string ($ password));

Különleges karakterek változókat $ user és a $ jelszót megszökött, és helyette a query string rendelt változó $ query.

Mindez azonban lyrics. A kérdés az, hogy sokkal érdekesebb, amikor a funkciók, mint például a PHP magic quotes.

Mágikus idézetek (. Angol magic idézetek) - kötelező szűrés a bejövő adatokat, az értékeket a globális változók: $ _REQUEST. $ _GET. $ _POST és $ _COOKIE. biztonsága érdekében a dolgozó SQL-lekérdezések.

Ezek a biztonsági tűnik, hogy meglehetősen kétséges. Ez a funkció a PHP tekinthető elavult és 6. változata is el fog tűnni. Ugyanakkor meg kell vizsgálni ezt a meglehetősen gyakori jellemzője régebbi verziói PHP, és előzetes tisztítási értékeinek globális változók extra perjel (\), ugyanazt a funkciót stripslashes (). példa

$ User = a $ _POST [ 'user'];
$ Password = a $ _POST [ 'password'];
if (get_magic_quotes_gpc ()) $ user = stripslashes ($ user);
$ Password = stripslashes ($ password);
>

Mint látható, ez a lehetőség nagyon kényelmetlen. Természetesen a felvétel a magic quotes. helyettesítheti az értéke a változók közvetlenül az SQL-lekérdezést. Ahhoz azonban, hogy jelenítse meg az értéket ugyanabban a formában kellene ellenőrizni, és ha szükséges, tisztítsa meg a vonalat.

A legegyszerűbb és legjobb megoldás itt lehet, hogy tiltsa magic idézetek. Ezt meg lehet tenni az alábbi módokon:

  1. A php.ini fájlt rendelni egy változó értékét Off magic_quotes_gpc. például:
magic_quotes_gpc = Off
  • A .htaccess fájlt kell tartalmaznia a húr: php_flag magic_quotes_gpc Off
  • Azt mondják, hogy van egy funkciója set_magic_quotes_gpc (). A PHP dokumentáció nem írjuk le, és nem működik. A legvalószínűbb, ez hamis.
  • Ha egyik lehetőség sem nem tetszik, akkor a „mankó”, amelyek lehetővé teszik, ha szükséges, tisztítsa meg a releváns változók. például:

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

    Szépségszalonok a városban a SPA-központban. Titkok érdekel.