Milujeme kameny je e‑shop s minerály, drahými kameny a šperky z nich. Běží na WordPressu a WooCommerce a má tisíce produktů.
Provozovatel si u nás objednal audit e‑shopu. Podle jeho výsledků jsme e‑shop opravili. Ukazujeme, co audit ukázal, jaká opatření jsme zavedli a co se změnilo v číslech.
Co audit ukázal
Výsledkem auditu byl písemný dokument s 23 nálezy. Každý nález měl prioritu: 11 kritických, které doporučujeme řešit přednostně, 9 důležitých a 3 doporučené. Nálezy se týkaly tří oblastí:
- spotřebitelské právo a DSA: povinné náležitosti pokladny a formulářů podle občanského zákoníku a Nařízení o digitálních službách,
- bezpečnost: ochrana administrace a přihlašování,
- výkon pod zátěží: nastavení PHP a databáze.
Provozovatel se rozhodl opravit všechno, co audit našel, a e‑shop potom svěřit do pravidelné správy.
Jak jsme postupovali
Opravy jsme dělali na živém e‑shopu, proto jsme je rozdělili do kol. Po každém kole dostal provozovatel souhrn: co je hotové, k čemu potřebujeme jeho rozhodnutí a jakou variantu doporučujeme.
- První kolo: zabezpečení, výkon, úklid databáze a zákonné náležitosti pokladny.
- Pluginy: připravili jsme seznam pluginů a u každého označili, jestli zůstane, půjde pryč, nebo je potřeba zjistit, k čemu slouží. Nejasné body jsme s provozovatelem probrali na schůzce. Pluginy určené ke smazání jsme nejdřív jen vypnuli, aby se ukázalo, jestli je e‑shop opravdu nepotřebuje.
- Aktualizace: aktualizovali jsme všechny pluginy, e‑shop otestovali a provozovatele poprosili, aby ho vyzkoušel i ve svém běžném provozu.
- Nastavení pluginů a doprava: poslední úpravy jsme předali provozovateli k otestování.
Některé věci jsme naopak nedoporučili. Přejmenovat přihlašovací adresu do administrace nemá na tomto e‑shopu velký smysl. Má veřejnou stránku „Můj účet“ pro zákazníky, takže se tím WordPress neskryje, a přihlášení chrání omezení pokusů a dvoufázové ověření. Placenou verzi pluginu pro souhlas s cookies jsme nahradili bezplatnou, protože pro český e‑shop stačí.
Co jsme opravili
Pokladna a povinnosti vůči zákazníkům
Většinu zákonných náležitostí jsme nastavili v pluginu Toret Toolkit, který si provozovatel pořídil. Plugin doplňuje do WooCommerce povinné prvky českého e‑shopu.
- Tlačítko „Objednám a zaplatím“: zákon vyžaduje, aby z tlačítka v pokladně bylo jasné, že objednávka zavazuje k platbě.
- Kontrola košíku: před dokončením objednávky pokladna zákazníka vyzve, aby si košík ještě zkontroloval.
- Odstoupení od smlouvy: formulář pro odstoupení do 14 dnů jsme zprovoznili na stránce Reklamace.
- Formulář podle DSA: na samostatné stránce mohou návštěvníci nahlásit závadný obsah, jak to vyžaduje Nařízení o digitálních službách.
- Historie cen: zapnuli jsme v Toolkitu záznam cen produktů, ze kterého se u slev počítá nejnižší cena za posledních 30 dní.
- Údaje provozovatele: na stránku Kontakt jsme doplnili obchodní firmu, IČO, sídlo a zápis v obchodním rejstříku.
- Souhlas s cookies: plugin Complianz, který zobrazuje lištu se souhlasem, jsme převedli na bezplatnou verzi a nastavili.
Zabezpečení administrace
- Editor souborů vypnutý: v administraci jsme vypnuli editor souborů šablony („Theme File Editor“). Kdo by se dostal k účtu administrátora, nemůže přes něj měnit kód webu.
- Dvoufázové ověření: přihlášení do administrace chrání bezpečnostní plugin Solid Security. Jednorázový kód umí poslat i e‑mailem, takže administrátoři nepotřebují ověřovací aplikaci v telefonu. Přihlásit se dá i otiskem prstu nebo přes Windows Hello a důvěryhodné zařízení si plugin zapamatuje.
- Ochrana proti hádání hesel: zpřísnili jsme omezení neúspěšných pokusů o přihlášení, takže bezpečnostní plugin adresu, ze které chodí, dočasně zablokuje.
- XML-RPC: zabezpečili jsme rozhraní XML-RPC, přes které roboti často automaticky zkoušejí hesla.
- Jetpack pryč: jeho bezpečnostní funkce se překrývaly s bezpečnostním pluginem. Duplikování stránek, které z něj e‑shop používal, převzal menší plugin Yoast Duplicate Post.
Výkon a databáze
PHP mělo pro jeden požadavek k dispozici jen 40 MB paměti (nastavení „memory_limit“). Na e‑shop, kde se v administraci filtrují, exportují a hromadně upravují objednávky, je to málo. Limit jsme zvýšili na 256 MB pro web a 512 MB pro administraci.
Největší rozdíl udělal autoload. WordPress při každém načtení stránky přečte z databáze všechna nastavení označená k automatickému načítání („autoload“). Na tomto e‑shopu jich bylo 8,77 MB. Skoro všechno tvořila mezipaměť pluginu Customers Order History Professional, který ukazuje historii objednávek zákazníků: 7,8 MB dat o desítkách tisíc zákazníků. Plugin je načítal při každém kliknutí na webu, přestože je potřebuje jen občas.
Data jsme z automatického načítání vyřadili. Plugin funguje dál a bere si je, až když je potřebuje. Autoload klesl na 0,32 MB, o 96,4 %.
Dál jsme uklidili databázi a doladili mezipaměť:
- smazali jsme 7 318 starých revizí příspěvků a produktů, přes 31 000 prošlých dočasných záznamů (transientů) a 48 spamových komentářů,
- nastavili jsme, aby plugin WP Rocket databázi uklízel sám jednou týdně,
- ve WP Rocket, který ukládá hotové stránky do mezipaměti, jsme zapnuli odložené načítání obrázků („LazyLoad“), zmenšení souborů CSS a JavaScriptu („Minify“) a přednačtení mezipaměti („Preload“).
Úklid pluginů a šablon
Smazali jsme 18 neaktivních pluginů a 6 neaktivních šablon. Jako záložní zůstala výchozí šablona Twenty Twenty-Five. U pluginů, u kterých nebylo jasné, k čemu slouží, jsme se provozovatele zeptali. Dva z nich chtěl ponechat, ty zůstaly.
Stránka pro neexistující adresy (404) dřív ukazovala jen text „Stránka nenalezena“. Teď nabízí vyhledávání produktů, hlavní kategorie a odkaz na kontakt.
Co jsme naprogramovali na míru: štítky dopravců
Štítky pro dopravce e‑shop tiskl přes službu Balíkobot a provozovatel se jí chtěl zbavit. Štítky jsme proto napojili přímo přes pluginy Toret pro Zásilkovnu, Českou poštu a GLS. Tlačítka pro tisk jsou v přehledu objednávek i v detailu objednávky.
Navíc jsme doprogramovali vlastní funkci, která po vytvoření štítku dopravce objednávku dokončí, aby se nemusela přepínat ručně.
Výsledek
| Co se změnilo | Před auditem | Po opravách |
|---|---|---|
| Paměť pro PHP („memory_limit“) | 40 MB | 256 MB na webu, 512 MB v administraci |
| Data, která WordPress čte při každém načtení stránky („autoload“) | 8,77 MB | 0,32 MB |
| Staré revize příspěvků a produktů | 7 318 | smazané |
| Prošlé dočasné záznamy (transienty) | přes 31 000 | smazané, úklid každý týden |
| Neaktivní pluginy a šablony | 18 pluginů, 6 šablon | smazané, zůstala jedna záložní šablona |
Pokladna má tlačítko „Objednám a zaplatím“ a výzvu ke kontrole košíku, e‑shop má formulář pro odstoupení od smlouvy i formulář podle DSA a do administrace se dá přihlásit s dvoufázovým ověřením. Po dokončení oprav jsme e‑shop převzali do pravidelné správy: aktualizujeme ho, zálohujeme a hlídáme jeho zabezpečení.
Kolik stojí audit a opravy
Výsledkem auditu je písemné shrnutí srozumitelnou řečí. Ke každému nálezu v něm je priorita a návrh, jak ho vyřešit. Audit obvykle zabere 2 až 4 hodiny práce, e‑shop s mnoha pluginy víc. Předem pošleme odhad a cenu, kterou bez vašeho souhlasu nepřekročíme.
Když opravy necháte na nás, pošleme nejdřív odhad a začneme až po vašem souhlasu. Ceny jsou na stránce Audit webu.
Když si nejste jistí, v jakém stavu je váš e‑shop, rádi ho projdeme. Srozumitelně sepíšeme, co je potřeba řešit hned a co může počkat. Opravy pak můžete udělat sami, s vaším webařem, nebo s námi, a o e‑shop se můžeme starat i dál.



Komentáře
Zatím tu nikdo nekomentoval. Napište první komentář.