ugrás a tartalomhoz

Biztonságos webalkalmazások PHP nyelven

joed · 2010. Szep. 12. (V), 17.06

Szerzők:

Tricia Ballad, William Ballad

Kiadó:

Kiskapu

2010

ISBN:

9789639637672

Oldalak száma:

298

Értékelés:

6

Linkek

Nagyon megörültem, mikor a Corvinus Egyetem könyvtárában az új szerzemények polcáról rám kacsintott a Biztonságos webalkalmazások PHP nyelven című könyv. Régóta kerestem irodalmat ebben a témában, több-kevesebb sikerrel. Hirtelen örömömben gyorsan meg is vásároltam a könyvet. Remélem, a cikk végére az olvasónak is kiderül, hogy megérte-e vagy sem.

Előzetesen megjegyzem, hogy közel 10 éve foglalkozom PHP webalkalmazásokkal és közben tapasztaltam hideget-meleget. A könyv kézbevétele előtt úgy gondoltam, hogy na végre, egy olyan könyv, ami majd olyan titkos trükköket fog nekem mutatni, amelyek a nyilvánvaló biztonságtechnikai elveken messze túlmutatnak és alkalmazásukkal támadhatatlan tuti-biztos, ultra-biztonságos kódokat fogok tudni írni. Akinek hasonló naiv ábrándjai vannak, megnyugtatom, ebben az esetben sincs új a nap alatt.

A könyv relatíve korrektül összefoglalja azokat az általános biztonságtechnikai irányelveket és hasznos tudnivalókat, amiket nagy valószínűséggel minden középhaladó PHP fejlesztő már észben tart.

Lefedett témakörök a teljesség igénye nélkül:

  • Túlcsordulás védelem
  • Változótisztítás, validálás, bemenetellenőrzés
  • Hitelesítés és titkosítás
  • Munkamenet eltérítés és XSS
  • A PHP futási környezet, Apache és MySQL valamint IIS és MS SQL biztonságossá tétele
  • Egység és rendszertesztek
  • Automatizált behatolás és támadási tesztek

Valószínűleg túl sokat vártam a könyvtől, ezért nem lenne korrekt, ha emiatt értékelném alul. Minden kétséget kizáróan rendkívül hasznos olvasmány kezdő és középhaladó PHP fejlesztők számára. Gyakorlatilag minden olyan témát tárgyal, amelyekkel minden valamire való fejlesztőnek tisztában kell lenni. Sok ponton nem értettem egyet a szerzővel, véleményem szerint nem minden esetben az optimális vagy legcélszerűbb kódolástechnikai tanácsokat adja, de természetesen nem félrevezető, senki nem fog bakot lőni, ha betéve követi a Tricia és William Ballad tanácsait. Annyit azért hozzáfűznék jó tanácsként, hogy inkább a koncepciót és elméletet lássuk a sorok között, mintsem a konkrét példát!

Összefoglalva számomra (haladó fejlesztőnek tartom magam) újdonságot nem mutatott a könyv, de vitathatatlan, hogy a téma összefoglalására tökéletesen alkalmas. Aki nem foglalkozott még webalkalmazások biztonságával, ez a könyv egy remek kiindulópont.

 
1

A túlcsordulás védelemről

inf3rno · 2010. Szep. 12. (V), 20.55
A túlcsordulás védelemről tudnál írni pár sort?
(google nem talál semmit php5 túlcsordulással kapcsolatban)
2

túlcsordulás

joed · 2010. Szep. 13. (H), 01.36
Szia!

Ebben a fejezetben lényegében a PHP metódusok működését, a végrehajtás szintjeit taglalja (oprendszer, C alapfv-ek, php core fv-ek stb.) és azt, hogy mitől jön létre a túlcsordulás, mik a követezményei és a nyilvánvaló problémákon túl miért rossz ez. Konkrét példának a htmlspecialchars() fv-t hozza, ahol korábban (még a hardened php project patch-e előtt) megfelelő méretű inputtal ki lehetett akasztani a parsert. A fejezet mondanivalója, hogy ellenőrizzünk minden bemenetet megfelelően és figyeljük a biztonsági fórumokat és adott esetben telepítsük a friss verziókat vagy patch-eket. Ilyen fórumok:
http://www.securityfocus.com/
http://www.cert.org/
http://hardened-php.net
4

a hardened-php helyett,

Tyrael · 2010. Szep. 13. (H), 10.37
a hardened-php helyett, hivjuk inkabb suhosin-nak, license miatt igy helyes, persze a domain mar ugy fog maradni.

a kerdezonek: az ilyen jellegu tamadasok nem a php alkalmazas, hanem az azt futtato zend engine ellen iranyulnak.
ezek nagyresze ellen vedelmet nyujt a suhosin nevu kiegeszites, ami egy patch, es egy zend extension formajaban elerheto.
ezek nem reszei a hivatalos kiadasnak, de a disztributorok a patchet tobbnyire alapbol hozzaforgatjak a szallitott binarisokhoz, az extensiont pedig elerhetove teszik a disztro tarolojabol.

manapsag eleg nagy csend volt ezen a teren, de nem is olyan reg a "the Month of PHP Security" kapcsan rengeteg(bar viszonylag keves kulonbozo hibat kihasznalo) ilyen sebezhetosegre derult feny:
http://www.php-security.org/category/vulnerabilities/index.html
itt lehet olvasni a hiba montos mukodeserol, de gyakorlatilag arrol van szo, hogy bizonyos fuggvenyek C implementacioja miatt lehetseges tetszoleges memoria olvasasa/irasa, ezaltal pl. megkerulhetoek bizonyos megkotesek (open_basedir, etc.), extrem esetben tetszoleges kodfuttatasra nyilik lehetoseg.
ezt a php fejlesztoi tobbnyire nem tekintik kritikus hibanak, mivel szerintuk ha valaki tetszoleges php kodot tud futtatni az adott gepen, akkor az mar regen rosz.

http://www.php-security.org/2010/06/25/mops-2010-061-php-splobjectstorage-deserialization-use-after-free-vulnerability/index.html
az itt leirt modon viszont tavolrol lehetett tetszoleges kodot futtatni egy suhosin nelkuli TikiWiki telepitesen, szoval en szemely szerint senkinek sem ajanlanam a pucer php hasznalatat produkcios kornyezetben.

Tyrael
7

Azért vannak itt

inf3rno · 2010. Szep. 14. (K), 02.32
Azért vannak itt nyalánkságok, ez pl elég laza.

Kösz az infot, még nem hallottam ilyesmiről, naívan azt hittem, hogy php-ban nincsenek ilyen gondok.
8

igen

joed · 2010. Szep. 14. (K), 10.19
Ezért érdemes folyamatosan figyelni az említett fórumokat, illetve az olyan "szürke zónás" oldalakat, mint ez.

Szerintetek hasznos lenne mondjuk itt a WL-on nyitni egy biztonságtechnikai topic-ot? Ahová ki-ki feltöltheti tapasztalatait vagy, hogy éppen milyen "betyárságot" talált szerte a neten.
Hmm?
10

Hajrá

Török Gábor · 2010. Szep. 14. (K), 10.55
Semmi akadálya, ez most is működhet. A fórum megfelelő rovatába feltehetők biztonságtechnikai kérdések is. Ha majd kellően sok ilyen jellegű téma lesz, akkor el lehet gondolkodni a külön csoportra bontáson. Másfelől tapasztalatokat, gondolatokat küldjetek be blogposztként, amire a többiek tudnak reflektálni.
9

igen, az egy mokas problema

Tyrael · 2010. Szep. 14. (K), 10.24
igen, az egy mokas problema volt.
az a baj, hogy egyelore a php-security temakor elegge egy emberes mufaj (Stefan Esser), a php security groupban is csak a "sima" core fejlesztok vannak benne, nincs igazabol security obsessed ember a csapatban, miota Stefan kilepett, es ez sajna meg is latszik a hozzaallason (nincs hiba, ha megis van hiba, akkor jelentektelen, ha megis erolteted, akkor meg meg te vagy a szemetlada).
valamint az sem tesz tul jol az egyuttmukodesnek, hogy Stefan egy hisztis furdoskurva, es mostanaban inkabb az anyagi megterulest nezi a hibak bejelentese kapcsan, nem pedig azt, hogy minel elobb ertesitse a fejlesztoket, hogy javitva legyen a hiba.

Tyrael
3

Nem neked szólt

Török Gábor · 2010. Szep. 13. (H), 10.32
Ezek szerint hasznosabb lett volna a könyvtári példányt átnyálaznod, és azt követően megvásárolnod vagy sem. :)

Semmiféleképpen sem gondolom, hogy egy könyvnek – ennek a könyvnek – tárgya kéne legyen „titkos trükkök” felfedése. A biztonsági sérülések túlnyomó része az ellenőrízetlen bemenetből származik. A könyv várhatóan nem neked szól, célközönsége azon PHP fejlesztők tábora, akik már túl vannak néhány nagyobb projekten, megtanulták már, hogy bizonyos támadások ellen mire kell felkészülni, de szeretnének egy átfogó képet kapni a további potenciálokról és azok elleni védekezési módszerekről. Ha ennek a kivánalomnak a könyv eleget tesz, akkor úgy gondolom – nem olvastam a művet – a könyv elérte célját, ez egy jó könyv, és ilyettébb a reáadott 6-os minősítést keveslem.
5

lehet, mégis elfogult maradtam

joed · 2010. Szep. 13. (H), 18.10
Igazad van Gábor. Bár igyekeztem az általad leírtakat is figyelembe venni, meglehet, hogy valóban túl kevés az a 6/10. Végül abba a csapdába estem, hogy aszerint értékeltem a könyvet, hogy nekem mekkora hasznosságot jelentett. Ha úgy tekintünk a könyvre, hogy a célközönsége a PHP biztonságtechnikában járatlan vagy egyelőre csak érdeklődő olvasók, akkor megérdemel egy 8-as értékelést.
Miért nem tízet?
  • Mert nem szerintem sok esetben nem nem túl szerencsés példákat hoz. A könyvön egy mintafeladat, mégpedig egy vendégkönyv alkalmazás létrehozása fut végig, mint példa. A tárgyalt témák nem mindegyikét mutatja be a vendégkönyv alkalmazáson.
  • Kicsit úgy érzem se nem gyakorlati, se nem elméleti a könyv. Valahol a kettő között van. Egyes témáknál szerintem elfért volna még némi részletezés. Pl. XSS-ről többet is lehet írni mint 2 oldal.
  • A szerző próbál elszakadni a klasszikus LAMP környezettől, ezért bemutatja az MS SQL és az IIS biztonságossá tételét is (az Apache + MySQL mellett). Ez azonban ugyancsak nem a legerősebb, nem a legjobban kifejtett fejezet. Kevés tapasztalatom van MS környezet üzemeltetésében, de szerintem nem annyira egyszerű egy MS SQL szervert bebiztosítani, mint amilyen mélységgel ezt a könyv tárgyalja.

Visszatérve első megjegyzésedre - és hogy cáfoljam magam - nem bántam meg, hogy megvásároltam a könyvet. Egyrészt így nem ülök rajta, más is kiveheti a könyvtárból (egy példány van). :) Másrészt, ahogy már azt tisztáztuk, biztonság technikával ismerkedők számára jó kis könyv ez és majd jó lesz kölcsönadni kollégának, ismerősnek, érdeklődőnek stb.

Tehát tisztább fejjel belegondolva, megérdemel egy kövér 8-ast.
6

Döfi

Török Gábor · 2010. Szep. 13. (H), 22.53
Örülök, hogy a kommentárom a fenti hozzászólásra sarkallt, az abban kifejtett érvek nagyban hozzájárultak a könyvről kialakított kép jobb előhívásában. A könyvajánlók szubjektív tartalmak, természetesen nem lehet mások számára megítélni a hasznosságát – attól lesz hiteles és értékes, ha a recenzió szerzője ismerteti könyvvel szemben támasztott elvárásait és azok mentén mond bírálatot. Ezt azakadályt te nagyszerűen vetted, és a leírtak fényében a 6-os értékelés elfogadható. Mindazonáltal abba a csapdába lehet könnyen esni, hogy túlzott vagy eltérő elvárásai vannak a kritikusnak. Ilyenkor érdemes szerintem egy másik nézőpont szerint is megközelíteni a művet és aszerint finomítani, kibővíteni a véleményt.
11

Elkezdtem

Tibcsi1003 · 2010. Szep. 21. (K), 15.21
Még csak ma kezdtem olvasni a könyvet. Az első három fejezet áttekintése során néhány észrevételem máris megfogalmazódott:
  • Az írók keverik a PHP és PERL nyelveket,
  • a reguláris kifejezések átgondolatlanok, és
  • a forráskódok tele vannak hibával - ami lehet hogy a
    fordításból eredő hiba.
A függvényeket megítélésem szerint következetlenül használja. Például az escapeshellarg függvény szerintem nem egy teljes shell utasítás levédésére való, hanem a shell utasítás paramétereinek egyenként történő levédésére, amelyeket behelyettesítünk a shell utasításba. Ennek ellenére a példában először létrehozza a teljes utasítást paraméterekkel, és a teljes sorra hívja meg a függvényt, így kapunk egy shell utasítást idézőjelek között.
Mindezek ellenére idáig tetszik, és folytatom tovább az olvasást.
Köszönöm az ajánlást.
12

Néhány furcsaság

Szarka Gyula · 2011. Júl. 25. (H), 14.28
En is nehany furcsasagot talaltam a konyvben. Az egyik az, hogy az szerzok tobb helyen elhagyjak az aposztrofot. Pl. az INSERT parancsnal a beszurt VARCHAR tipusu tobb szavas szoveget nem teszik aposztrofok v. idezojelek koze!
Az SQL befecsekendezest is aposztrofok nelkul magyarazzak. Ez igy vagy nem mukodik, vagy egyebkent is elvetemult az az SQL motor, amely elfogadja a stringet aposztrofok nelkul is.
Aztan azt sem ertem, hogy a rendszerhivasok kockazatat eppen a fajlmasolas parancsaval illusztraljak. Mert nem nagyon hinnem, hogy elvetemult modon meg kellene hivni az operacios rendszer mv parancsat, mikor a php is tud ilyet? Vagy van erre valamilyen komoly ok?

Most nem tudom, hogy a 40 oldal utan olvassam-e meg a konyvet... Ti hogy vagytok vele?
13

"Annyit azért hozzáfűznék jó

Walkman_ · 2011. Dec. 9. (P), 10.26
"Annyit azért hozzáfűznék jó tanácsként, hogy inkább a koncepciót és elméletet lássuk a sorok között, mintsem a konkrét példát!"

De ez igazából bármiben így van amit olvasol. Elolvasod, végiggondolod mit ír, utánajársz és ha egyértelmű sületlenség vagy pontatlanság van benne akkor kijavítod a hibákat, ennyi.
Én minden könyvet csak ugródeszkának tekintek, hogy jobban képben legyek a témában, nem pedig abból akarom A-tól Z-ig megtanulni hogy miről is van szó.