9.25 Tippek és trükkök

Default book

Egy nyilvános szerveren futó PHP program futtatásának a biztonságossá tétele rendkívül fontos dolog, és két tényezőn, a szerver beállításain és a programozó gondosságán is múlik.

Bemenő adatok ellenőrzése és szűrése

A bemenő adatokat két oldalon kell ellenőrizni.

  • A kliens oldalon a formok adatbevitelének felprogramozásával

  • A szerver oldalon a már elküldött adatok érvényességének vizsgálatával

Kliens oldali ellenőrzés

A user oldal csak arra való, hogy a felhasználó hibáit küszöbölje ki illetve minimalizálja.

Az adatbevitel tipikusan egy formon keresztül zajlik, tehát a formon való adatbevitelt lehet ellenőrizni. Erre a célra Javascript kódot használhatunk, illetve a HTML 5-ben megjelent különböző beviteli mező fajtákat (pl. NUMBER) használhatjuk, ellenőrizhetjük, hogy formailag megfelelnek-e a bevitt adatok bizonyos feltételeknek, előírhatunk kötelezően kitöltendő mezőket. és a Javascript kód ezek teljesülését ellenőrzi.

  • Erre a Form submit gombjára eseménykezelőt hozhatunk létre tisztán javascript vagy jQuery library segítségével.

  • Általában lefuttathatunk minden mező tartalmának változására eseménykezelőt, amellyel a formális feltételeket ellenőriztethetjük.

Ezeket az ellenőrzéseket validálásnak hívjuk!

A HTML Formoknál az alábbi beviteli mezők a leggyakoribbak:

Input mezők

  • Text – ellenőrizni kell a tartalmát

  • Textarea – ellenőrizni kell a tartalmát

  • Checkbox – ellenőrizni lehet - ki van-e kapcsolva vagy be van kapcsolva

  • RadioButton – célszerű ellenőrizni - van-e kiválasztott a lehetőségek között.

  • Select menü – a kiválasztottságot célszerű ellenőrizni - van-e kiválasztott a lehetőségek között

  • File mező – Igazából a file létezését ellene ellenőrizni, de nem illik. Csak annyit lehet, hogy a file mezőben van-e valamiféle bejegyzés.

A fentiek alapján látszik, hogy egyszerű esetben csak a text és a textarea ellenőrzése igazán fontos. Ott ellenőrizhetjük a string hosszát, azt hogy bizonyos karakterek benne vannak-e vagy nincsenek. Megvizsgálhatjuk, hogy a bevitt adat numerikus-e, és ha igen, akkor milyen tartományba esik.

Minden esetben érdemes default értéket bejelölni az értékeknél.

Szerver oldali ellenőrzés

A szerver oldalon már formálisan ellenőrzött adatot kapunk, miért kell a szerver oldalon ismételten ellenőrizni?

A kliens oldali ellenőrzés a felhasználói hibákat szűri ki és elsősorban a felhasználói élmény miatt érdemes használni. Ilyen módon rövid idő alatt kiderülnek a fatális felhazsnálói hibák.

A szerver oldali ellenőrzés a sanda szándékok elkapására való, hogy a program működését ne lehessen megzavarni, illetve ne lehessen meghekkelni a weboldalt.

A szerver oldalon mindent ellenőriznünk kell

  • Vannak-e elvárt adatok

  • A beküldött változók értékét - benne van-e az elvárt tartományban,

  • A beküldött változók értékeinek formátumát:

    • Milyen hosszú a string

    • engedélyezett és elvárt karakterek vannak-e benne

    • Ki kell szűrni az esetlegesen bevitt HTML tag-eket, a ” és a ’ jeleket,

    • Az SQL injection lehetőségeit

  • A beküldött adat numerikus-e, és ha igen, akkor megfelelő-e az értéke.

Fájlok beküldésének ellenőrzése

Ha a felhasználónak engedélyezzük bizonyos fájlok feltöltését a szerverre, akkor gondoskodnunk kell ezeknek a fájloknak a biztonságos tárolásáról és meg kell akadályoznunk, hogy a webhely feltörésére használják.Az ellenőrzés az alábbiakat jelenti:

  • A PHP.INI megfelelő (biztonságos) beállítása: A PHP csak megadott területeket érjen el.

  • Biztonságos kapcsolatok, kapcsolati módok használata

  • Csak bizonyos típusú fájlokat lehessen feltenni: (pl. képek, pdf-ek). futtatható fájlok feltöltésének engedélyezése meglehetősen problémás!

  • Méretkorlátozás

  • A szerverrel megfelelő .htaccess fájlok segítségével az elérhetőséget korlátozzuk.