LINUXSOFT.cz Přeskoč levou lištu
Uživatel: Heslo:  
   CZUKPL

> PHP (96) - (ne)bezpečné PHP

Lze PHP považovat za bezpečnou záležitost? A pokud ano, co se pro to dá udělat?

26.1.2005 15:00 | Petr Zajíc | Články autora | přečteno 32969×

Přestože jsme se určitým aspektům zabezpečení PHP věnovali průběžně, budou celé následující dva díly seriálu věnovány bezpečnosti. Že je to potřeba udělat, o tom mě přesvědčily komentáře čtenářů a spousta dotazů jak od programátorů v PHP, tak od správců serverů. Dnes se podíváme na víceméně na serverovou část problematiky. Tedy - co udělat, aby nám provoz PHP na serveru nekompromitoval jeho bezpečnost. Budu se věnovat jen věcem, které úzce souvisejí s PHP. Administrátoři webů mají pochopitelně mnohem širší arzenál zbraní, protože mohou nastavovat takové věci jako práva k souborům či webový server.

Žonglování se čtyřmi míčky

Umíte žonglovat se čtyřmi míčky? (Já ne). Zabezpečit PHP se tomu trochu podobá, protože do hry vstupují čtyři faktory, které se vzájemně víceméně vylučují, a přitom všechny čtyři mají vliv na to, zda a jak bude aplikace PHP zabezpečena. Uvědomme si, že se při úvaze o bezpečnosti serveru se jedná o programátory v PHP, uživatele našich aplikací, administrátora webu, na kterém to poběží a o případné útočníky.

Programátor
Programátor by si samozřejmě přál, aby PHP umělo co nejvíce věcí a aby šly napsat rychle a snadno. Pro programátora je zajímavé, když mu někdo s prací pomůže - použitím externí knihovny či funkce třetí strany může nezřídka získat spoustu času na vývoj něčeho jiného (nebo na dohnání časového plánu). Programátor chápe, že PHP se musí zabezpečit a má v ruce některé velmi dobré nástroje, které mu v tom mohou pomoci. Někdy však programátor vědomě či nevědomě zabezpečení aplikace podcení - třeba když mu hoří časový plán, když nemá dost peněz na vývoj nebo když si něčeho nevšimne.

Uživatel
Uživatel by chtěl aplikaci co možná nejjednodušší. Běžný uživatel problém bezpečnosti nevnímá příliš zblízka; bude jej obtěžovat, pokud bude například přihlašování do aplikace příliš složité. Jestliže však uživatel vinou nějaké bezpečnostní chyby přijde o data (nebo ještě lépe - pokud přijde o peníze), začne si problém související s bezpečností uvědomovat velmi palčivě. Takový zákazník je potencálně velmi zajímavý - není pak pro něj problém pochopit, že psaní kvalitních a bezpečných aplikací je drahé, ale nezbytné.

Administrátor
Typický správce se samozřejmě nastará pouze o samotné PHP, stará se o celý stroj nebo o více strojů a jeho prvotním zájmem je, aby systém neměl pokud možno žádné bezpečnostní slabiny jako celek. Samozřejmě, že ruku v ruce s tím jde druhý, protichůdný požadavek - aby zabezpečení webu mohl nějak automatizovat a aby mu to nezabralo příliš mnoho času. Administrátor si uvědomuje, že úšpěšný útok na jeho server by mohl poškodit nejen data konkrétního uživatele, ale rovněž pověst firmy, pro kterou pracuje, nebo jeho vlastní renomé.

Pozn.: A taky je to jenom člověk.

Útočník
Typický útok na webové sídlo nebude pravděpodobně veden touhou zlikvidovat konkrétního uživatele. Útočník si může vybrat pro svou nekalou činnost weby, u nichž najde nějakou bezpečnostní slabinu nebo weby, jejichž prolomením si získá jméno. Líbilo by se mu, kdyby existovala bezpečnostní díra, pomocí níž by se mohl do systému dostat - a jako jediný z těch čtyř má na své straně čas.

Přestože asi nebudete chtít vycházet vstříc útočníkům, vidíte, že i ostatní tři strany mají víceméně odlišné priority. Správné zabezpečení PHP je tedy určitý kompromis - mazi možností něco napsat, něco používat a rovněž to spravovat. Jak ale uvidíme, lze pro zabezpečení PHP přece jen něco udělat.

Verze PHP

V době psaní tohoto článku byla stabilní verzí PHP 4.3.10. Administrátor pravděpodobně bude mít pádný důvod instalovat na server nejnovější stabilní verzi PHP, protože právě objevení bezpečnostích děr bývá častým důvodem k vydání nové verze jazyka. Obecně toto tvrzení platí i pro jiné součásti systému. Nebývá to však vždy tak jednoduché, jak by se mohlo na první pohled zdát; tak například dvě nejnovější verze nějakého software spolu nemusejí správně spolupracovat, přestože předchozí dvě verze s tím neměly žádný problém.

Rovněž tak bývá problém najít administrátora, ochotného instalovat a spravovat úplně nejnovější zveřejněnou verzi software (v případě PHP je to v době psaní tohoto článku verze 5.0.3. Důvodem je to, že v nejnovějších verzích se mohou vyskytovat chyby.

Zakázané funkce

Administrátor může rovněž některé funkce v PHP zakázat. Pro zvídavé - děje se tak pomocí konfigurační direktivy disable_functions v souboru php.ini. Typickými kandidáty na takové funkce jsou například funkce pro vykonání příkazů operačního systému a funkce na správu konfigurace (system, exec, passthru, leak, Set_Time_Limit, copy, delete, popen, PutEnv, shell_exec a podobně). Konfigurační direktivu disable_functions lze použít pouze v php.ini, nelze ji tedy specifikovat ani uvnitř skriptu, ani pro danou složku.

Význam zákazu některých funkcí je jasný - zabránit skriptům v provedení akcí, které by neměly umět.

Safe_mode

Safe mode, neboli bezpečný režim je pokus o zabezpečení PHP (zejména na sdílených hostinzích) prostředky, které má PHP k dispozici. Filozofie je to diskutabilní, protože se pokouší pomocí jednoho programu (PHP) ovlivnit bezpečnost systému. Takže, například, někdo může získat falešný pocit, že zapnutím zabezpečeného režimu PHP má na serveru po starostech - tak to samozřejmě není. Konkrétní význam bezpečného režimu je spíše otázka pro administrátory - my se teď pojďme podívat, jaká omezní v případě tohoto režimu nastupují:

  1. Existují omezené funkce nebo funkce, které se provedou jen v určitém případě
  2. Bez ohledu na nastavení konfigurační direktivy disable_fuctions jsou zakázány funkce dl a shell_exec
  3. Funkce exec, system, passtrhu a popen jsou omezeny na ty programy, které existují ve stanoveném adresáři. Stanovený adresář je adresář, definovaný konfigurační direktivou safe_mode_exec_dir.
  4. Funkce pro práci se soubory (jako jsou copy, rename, unlink apod.) kontrolují, zda soubory (adresáře), které se pokoušíte měnit, mají stejného vlastníka jako spouštěný skript.

Pakliže mám chvíli mluvit jako programátor - někdy je zabezpečený režim zkutečně k vzteku. Tak například typický scénář je ten, že skripty nahráváte na webový server pomocí protokolu FTP. Snadno se tedy může stát, že vlastníkem skriptů je na serveru někdo jiný než vlastník souborů, které skripty vytváří nebo které mají měnit. Všechny operace se soubory je v takovém případě třeba otestoavat kvůli právům.

Pozn.: Jiné dobré řešení je provádět co možná nejvíce operací samotnými skripty a co možná nejméně pomocí FTP. I upload souboru může být proveden skriptem a odpadají tak problémy s právy.

Příště se podíváme na bezpečnost  souborů, databází, hesel a uživatelských dat.

Verze pro tisk

pridej.cz

 

DISKUZE

Jenom pravopis 27.1.2005 14:48 David Jaša
je to možné!!! 7.3.2005 12:07 Ondrej Balko
  L Re: je to možné!!! 26.4.2005 10:01 Petr Zajíc




Příspívat do diskuze mohou pouze registrovaní uživatelé.
> Vyhledávání software
> Vyhledávání článků

14.11.2017 16:56 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tradičně první čtvrtek před třetím pátkem v měsíci: 16. listopadu od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.11.2017 11:06 /Redakce Linuxsoft.cz
PR: 4. ročník odborné IT konference na téma Datová centra pro business proběhne již ve čtvrtek 23. listopadu 2017 v konferenčním centru Vavruška, v paláci Charitas, Karlovo náměstí 5, Praha 2 (u metra Karlovo náměstí) od 9:00. Konference o návrhu, budování, správě a efektivním využívání datových center nabídne odpovědi na aktuální a často řešené otázky, např Jaké jsou aktuální trendy v oblasti datových center a jak je využít pro vlastní prospěch? Jak zajistit pro firmu či jinou organizaci odpovídající služby datových center? Podle jakých kritérií vybrat dodavatele služeb? Jak volit součásti infrastruktury při budování či rozšiřování vlastního datového centra? Jak efektivně spravovat datové centrum? Jak eliminovat možná rizika? apod.
Přidat komentář

13.9.2017 8:00 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt – tentokrát netradičně v pondělí: 18. září od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

3.9.2017 20:45 /Redakce Linuxsoft.cz
PR: Dne 21. září 2017 proběhne v Praze konference "Mobilní řešení pro business". Hlavní tématy konference budou: nejnovější trendy v oblasti mobilních řešení pro firmy, efektivní využití mobilních zařízení, bezpečnostní rizika a řešení pro jejich omezení, správa mobilních zařízení ve firmách a další.
Přidat komentář

15.5.2017 23:50 /František Kučera
Máš rád svobodný software a hardware nebo se o nich chceš něco dozvědět? Zajímá tě DIY, CNC, SDR nebo morseovka? Přijď na sraz spolku OpenAlt, který se bude konat ve čtvrtek 18. května od 18:00 v Radegastovně Perón (Stroupežnického 20, Praha 5).
Přidat komentář

12.5.2017 16:42 /Honza Javorek
PyCon CZ, česká konference o programovacím jazyce Python, se po dvou úspěšných ročnících v Brně bude letos konat v Praze, a to 8. až 10. června. Na konferenci letos zavítá např. i Armin Ronacher, známý především jako autor frameworku Flask, šablon Jinja2/Twig, a dalších projektů. Těšit se můžete na přednášky o datové analytice, tvorbě webu, testování, tvorbě API, učení a mentorování programování, přednášky o rozvoji komunity, o použití Pythonu ve vědě nebo k ovládání nejrůznějších zařízení (MicroPython). Na vlastní prsty si můžete na workshopech vyzkoušet postavit Pythonem ovládaného robota, naučit se učit šestileté děti programovat, efektivně testovat nebo si v Pythonu pohrát s kartografickým materiálem. Kupujte lístky, dokud jsou.
Přidat komentář

2.5.2017 9:20 /Eva Rázgová
Putovní konference československé Drupal komunity "DrupalCamp Československo" se tentokrát koná 27. 5.2017 na VUT FIT v Brně. Můžete načerpat a vyměnit si zkušenosti z oblasti Drupalu 7 a 8, UX, SEO, managementu týmového vývoje, využití Dockeru pro Drupal a dalších. Vítáni jsou nováčci i experti. Akci pořádají Slovenská Drupal Asociácia a česká Asociace pro Drupal. Registrace na webu .
Přidat komentář

1.5.2017 20:31 /Pavel `Goldenfish' Kysilka
PR: 25.5.2017 proběhne v Praze konference na téma Firemní informační systémy. Hlavními tématy jsou: Informační systémy s vlastní inteligencí, efektivní práce s dokumenty, mobilní přístup k datům nebo využívání cloudu.
Přidat komentář

   Více ...   Přidat zprávičku

> Poslední diskuze

15.12.2017 15:11 / Petit
freehold nj

15.12.2017 15:06 / Petit
nj freehold

5.12.2017 11:50 / Thomas
kitchen renovations

18.9.2017 14:37 / Rojas
high security vault

15.9.2017 7:33 / Wilson
new zealand childcare jobs

Více ...

ISSN 1801-3805 | Provozovatel: Pavel Kysilka, IČ: 72868490 (2003-2017) | mail at linuxsoft dot cz | Design: www.megadesign.cz | Textová verze