Abyste mohli firemní systém předat jinému programátorovi, potřebujete v ruce čtyři věci: zdrojový kód v podobě, v jaké skutečně běží, přístupy ke všemu, na čem systém stojí, kompletní data a popis toho, jak je systém spuštěný a s čím je propojený. Jen zálohovat stačí tehdy, když systém dělá málo, nikdo na něm nestaví a není přístupný z internetu.

Odpověď závisí hlavně na tom, jak moc firma na systému stojí a jestli se k němu dá dostat z internetu. Rozhoduje také, jestli účty k doméně, serveru a napojeným službám patří firmě, nebo autorovi. A nakonec smlouva: kdo smí kód upravovat, určuje to, na čem jste se s autorem kdysi dohodli.

Bezpečnostní díra v PHP ukazuje, proč systém bez správce nejde nechat být

Projekt PHP nedávno vydal oficiální varování před kritickými zranitelnostmi, které umožňují vzdálené spuštění kódu. Vyzývá k okamžité aktualizaci. Ohrožený může být každý firemní web nebo systém, který běží na neaktualizované verzi PHP a o který se nikdo pravidelně nestará.

Vzdálené spuštění kódu znamená, že útočník může na vašem serveru udělat prakticky cokoli: číst databázi zákazníků, mazat data nebo rozesílat poštu vaším jménem.

Aktualizace přitom není jedno kliknutí. Starší aplikace na novější verzi PHP často bez úprav nefungují. Někdo musí aktualizaci udělat, vyzkoušet a opravit, co se rozbije.

Pokud takový člověk není, máte problém. A nejde jen o tuto díru. Další přijde, ať už v PHP, v databázi, nebo v knihovnách, které systém používá. Systém bez správce není hotová věc. Je to otevřené riziko.

Udělejte nouzovou zálohu dřív, než na cokoli sáhnete

Než kdokoli začne aktualizovat nebo opravovat, potřebujete kopii všeho, co dnes funguje. Kdyby se zásah nepovedl, je to jediná cesta zpět.

Nouzová záloha má obsahovat:

  • celou databázi ve formě výpisu, ze kterého jde databázi znovu založit;
  • nahrané soubory – dokumenty, přílohy, obrázky, vystavené faktury;
  • zdrojový kód přesně tak, jak leží na serveru, včetně knihoven třetích stran;
  • konfigurační soubory s nastavením připojení k databázi, poště a dalším službám;
  • seznam plánovaných úloh, které na serveru běží samy (rozesílání e-mailů, noční přepočty, stahování kurzů);
  • poznámku, na jaké verzi PHP, databáze a operačního systému systém běží.

Zálohu uložte mimo server, nejlépe na dvě místa. Obsahuje hesla a osobní údaje, takže patří tam, kam se nedostane každý.

Záloha, kterou nikdo nezkusil obnovit, je jen naděje. Nechte programátora z ní spustit systém na zkušebním počítači. Teprve pak víte, že máte všechno.

Pokud k serveru nemáte přístup vůbec, obraťte se na poskytovatele serveru. Jednat bude s tím, na koho je účet vedený. Připravte si proto doklady, že službu platila a používala firma.

Sepište přístupy a převeďte je na firmu

Typická past není chybějící kód. Je to účet vedený na osobní e-mail autora nebo placený z jeho karty. Až ho přestane platit, doména vyprší nebo server zmizí i s daty.

Ke každé položce doplňte, kdo má přístup a na čí jméno je účet:

Co Proč to potřebujete Jak ověřit, že to máte
Doména a její nastavení Bez ní nejde přesměrovat web ani poštu U registrátora vidíte firmu jako držitele
Server Tady systém běží a leží data Máte vlastní přihlášení a smlouva je na firmu
Databáze Obsahuje veškerá data Znáte heslo a umíte z ní udělat zálohu
Správcovský účet aplikace Uživatelé a nastavení Přihlásíte se a vidíte všechny uživatele
Úložiště zdrojového kódu Historie změn a poslední verze Máte přístup a víte, jestli odpovídá serveru
Napojené služby Platební brána, rozesílání e-mailů, účetní program, dopravci Ke každé máte účet a víte, kde změnit přístupový klíč

Po převodu všechna hesla změňte. Nová ukládejte do firemního správce hesel, ne do jedné hlavy.

Autora zkuste oslovit písemně, i když dosud nereagoval. Krátká zpráva s konkrétním seznamem toho, co potřebujete, má větší šanci než obecné „ozvěte se“. Někdy stačí, že žádost je jasná a nezabere mu moc času.

Za pravdu berte kód, který skutečně běží na serveru

Kód, který vám autor kdysi předal na disku nebo v úložišti, nemusí odpovídat tomu, co je na serveru. Úpravy se často dělaly přímo na serveru a nikam jinam se nedostaly.

U PHP je to výhoda. Kód na serveru je obvykle čitelný a programátor s ním může pracovat. Výjimkou je kód zašifrovaný nástrojem na ochranu proti kopírování. Ten bez autora prakticky upravit nejde a takový systém se dá jen dál provozovat, nebo nahradit.

Druhá otázka je právní. Mít kód v ruce ještě neznamená smět ho měnit nebo předat jinému dodavateli. Záleží na smlouvě a licenci, případně na tom, jestli autor byl zaměstnanec. Pokud smlouva chybí nebo je nejasná, poraďte se s advokátem dřív, než systém předáte dál.

Kromě kódu hledejte jakoukoli dokumentaci. Stačí i staré e-maily, poznámky k instalaci nebo původní zadání. Novému správci pomůžou pochopit, proč je něco udělané zrovna tak.

Zálohovat a nechat být stačí jen u malého systému mimo internet

Ne každý opuštěný systém je potřeba převzít. Někdy je rozumné ho zmrazit: pravidelně zálohovat, omezit přístup a nic dalšího nedělat.

To dává smysl, když platí všechno z tohoto seznamu:

  • systém dělá málo a firma bez něj vydrží pár dní;
  • nikdo na něm nestaví nové věci a měnit se nebude;
  • není přístupný z internetu, nebo jen z firemní sítě či přes zabezpečené připojení;
  • neobsahuje platby ani citlivé údaje zákazníků;
  • data z něj umíte dostat ven, kdybyste ho jednou vypínali.

Jen zálohovat nestačí, když:

  • je systém dostupný z internetu a běží na verzi PHP, která už nedostává bezpečnostní opravy;
  • přijímá objednávky, platby nebo údaje zákazníků;
  • potřebujete v něm cokoli změnit, třeba kvůli novému účetnímu programu nebo legislativě;
  • na něm závisí denní provoz a výpadek by zastavil práci.

Zmrazení není navždy. Zapište si, kdy rozhodnutí znovu otevřete, například při příští vážné bezpečnostní chybě nebo změně provozu.

O údržbě nebo náhradě rozhodněte až po prohlídce a podle čtyř otázek

Nechte systém prohlédnout programátora, který by ho mohl udržovat. Výstupem má být krátké písemné shrnutí: co systém dělá, v jakém je stavu, co hrozí a co doporučuje. Kdo slibuje převzít cokoli bez prohlídky, neví, do čeho jde.

Pak si položte čtyři otázky:

  1. Je kód srozumitelný? Pokud se v něm nový správce zorientuje, údržba bývá schůdná. Pokud ne, každá oprava bude drahá a riskantní.
  2. Jak daleko je od podporované verze PHP? Malý skok se dá zvládnout úpravami. Systém postavený na verzi starší o mnoho let bývá rozumnější postavit znovu.
  3. Kolik toho budete chtít měnit? Když systém jen běží, stačí údržba. Když ho chcete rozšiřovat, platíte u každé změny daň za starý kód.
  4. Dělá systém něco, co umí běžný krabicový program? Pokud je postup standardní, hotový program může být rozumnější volba než vlastní systém.

Náhrada nemusí proběhnout naráz. Nový systém jde stavět po částech vedle starého, převádět data postupně a starý vypínat kus po kusu. Firma tak ani na den nestojí.

I při náhradě platí: nejdřív záloha a zabezpečení starého systému. Než nový naběhne, starý musí vydržet.

Při předání nastavte věci tak, aby se situace neopakovala

Převzetí je příležitost napravit to, co k problému vedlo. Ať systém udržuje kdokoli, firma by měla mít vždy v ruce:

  • všechny účty vedené na firemní e-mail a placené firmou;
  • úložiště kódu pod firemním účtem, kam správce ukládá každou změnu;
  • stručný popis, jak systém běží, jak se zálohuje a jak se obnovuje;
  • smlouvu, která jasně říká, kdo smí kód používat a upravovat;
  • domluvu, kdo sleduje bezpečnostní varování a jak rychle na ně reaguje.

Druhý člověk, který systém aspoň zběžně zná, je levná pojistka. Nemusí ho umět opravit. Stačí, když ví, kde co je.

Jednou ročně si ověřte, že přístupy pořád fungují a záloha jde obnovit. Je to krátká práce a vyplatí se v den, kdy někdo zase nezvedne telefon.

Zdroje

Často kladené otázky

Smí jiný programátor upravovat kód, který napsal někdo jiný?

Záleží na smlouvě a licenci, kterou firma s autorem uzavřela, a na tom, jestli byl zaměstnanec, nebo externí dodavatel. Samotné držení kódu oprávnění k úpravám nedává. Pokud smlouvu nemáte nebo je nejasná, nechte si situaci posoudit advokátem.

Co když server i doména běží na účtu autora?

Pak je převod na firmu nejnaléhavější úkol, protože o všem rozhoduje jen on. Poskytovatelé obvykle jednají jen s majitelem účtu, takže se hodí faktury a výpisy plateb, ze kterých je vidět, že službu hradila firma. Konkrétní postup převodu vám řekne podpora daného poskytovatele.

Stačí požádat poskytovatele serveru, ať zvýší verzi PHP?

Bezpečnostní díru to může zavřít, ale starší aplikace na novější verzi nemusí fungovat. Můžete skončit u systému, který je bezpečný, ale nefunkční. Rozumnější je udělat zálohu a novou verzi nejdřív vyzkoušet na kopii.

Jak poznám, že nový správce ví, co dělá?

Po prohlídce vám dá písemné shrnutí, kterému rozumíte i bez technického vzdělání: co systém dělá, co hrozí a jaké máte možnosti. Řekne vám i to, kdy se převzetí nevyplatí. Opatrní buďte u každého, kdo slibuje převzetí dřív, než systém viděl.

Co dělat, když se autor nakonec ozve?

Využijte to k řádnému předání. Požádejte o převod účtů na firmu, aktuální kód, popis provozu a případně o placenou hodinu vysvětlování novému správci. I když budete spolupráci obnovovat, účty a kód by měly zůstat ve vlastnictví firmy.