PHP kézikönyv
Előző |  | Következő

# 30. Fejezet. Felhasználótól érkező adatok

A legtöbb probléma sok PHP programban nem a nyelvben rejlik, hanem abból fakad, hogy a kód nem a biztonságosságot szem előtt tartva készült. Emiatt mindig kellő időt kell szánni annak ellenőrzésére, hogy egy adott kódrészletre milyen hatással lehet egy váratlan hibás adat.

Példa 30-1. Veszélyes változóhasználat
`<?php // egy fájl törlése a user könyvtárából... vagy // talán valaki máséból? unlink ($ordogi_valtozo); // Az elérés naplózása... vagy egy /etc/passwd bejegyzésé? fputs ($fp, $ordogi_valtozo); // Valami egyértelmű dolog futtatása.. vagy rm -rf *? system ($ordogi_valtozo); exec ($ordogi_valtozo); ?>`

Mindig alaposan meg kell vizsgálni a felhasználók által beadott adatokat, feltéve a következő kérdéseket:

- Biztos, hogy ez a szkript csak a kívánt fájlokat fogja módosítani?

- Előfordulhat egy ponton, hogy szokatlan vagy nem kívánatos adat jelenjen meg?

- Használható-e az adott szkript nem kívánatos formában?

- Felhasználható-e más szkriptekkel együtt egy negatív hatás elérésére?

- Megfelelően naplózásra kerülnek-e a tranzakciók (elérések, változtatások)?

Kellőképpen átgondolva a fenti kérdéseket a szkript írásakor, megkímélhet attól, hogy később végiggondolva a problémákat szerencsétlen módon újra kelljen írni a teljes kódot a védelem növelése érdekében. Ezzel sem lehet garantálni a rendszer biztonságát, de segíthet annak növelésében/ fenntartásában.

Számításba lehet venni a register_globals, magic_quotes és más kényelmi szolgáltatások kikapcsolásának a gondolatát is, mivel ezek megfosztanak az adatok forrásának, helyességének, tartalmának ismeretétől. A PHP*t maximális hibajelentési szinten használva - az error_reporting E_ALL beállításával - figyelmeztetést ad előzetes érték nélküli, definiálatlan változókról, ezzel védve attól, hogy véletlenül hibás adatokkal dolgozzon a program.

Előző | Tartalom | Következő
Globálisan is elérhető változók (Register Globals) használata | Fel | Magic Quotes