Prvním krokem k efektivnímu použití je správné členění store. Rozdělte si Redux store na menší slice, každý s vlastními reducery a akcemí. Například oddělte data uživatele, obsah košíku a stav notifikací. Tím zajistíte lepší čitelnost a snazší testování. Vyhněte se obřím reducertům, které řeší všechno. Místo toho použijte funkci combineReducers a každý slice nechte žít samostatně. Tím se vyhnete častému problému, kdy jedna chyba v jednom místě rozbije celou aplikaci.
SQL injection patří mezi nejčastější a nejnebezpečnější zranitelnosti webových aplikací. Útočník využívá nedostatečné ošetření uživatelských vstupů k tomu, aby do SQL dotazu vložil vlastní příkazy. Díky tomu může číst, měnit nebo mazat data v databázi, obejít přihlášení nebo dokonce převzít kontrolu nad serverem. Prevence přitom není složitá, vyžaduje ale důslednost při psaní každého dotazu, který pracuje s uživatelskými daty.
Základním pravidlem je nikdy neskládat SQL dotaz pomocí řetězcové konkatenace. Typická chyba vypadá jako spojení textu s proměnnou, například když do dotazu vložíte uživatelské jméno přímo jako součást příkazu. Pokud uživatel zadá místo jména třeba výraz s apostrofem a podmínkou, může změnit logiku dotazu. Vždy proto používejte připravené dotazy (prepared statements) a parametrizované dotazy. Tyto mechanismy oddělují SQL kód od dat a databáze je pak bere jako hodnoty, nikoli jako příkazy.
Pro první pokus stačí obyčejný textový editor a prohlížeč. Vytvořte soubor s příponou .html a do něj napište základní kostru: doctype, html, head a body. Do hlavičky patří meta informace a titulek stránky, do těla pak samotný obsah. Propojení s CSS provedete buď stylem přímo v hlavičce, nebo lépe externím souborem s příponou .css, který připojíte odkazem. Mnoho začátečníků dělá chybu, že všechny styly píší do HTML, ale to se při větším projektu stává nepřehledné.
Pozor si dejte i na méně obvyklá místa, kde se SQL injection může schovat. Často se zapomíná na HTTP hlavičky, cookies nebo soubory nahrané uživatelem. Tyto hodnoty také procházejí aplikací a mohou skončit v databázi. Vždy je ošetřete stejně jako formulářová pole. Dále myslete na chybové hlášky – nikdy nevracejte uživateli detailní výpis SQL chyby. Útočník by z něj získal informace o struktuře databáze. Místo toho logujte chyby do souboru a uživateli zobrazte neutrální hlášení.
Pravidelně testujte aplikaci na zranitelnosti. Používejte automatizované skenery i manuální testy, které zahrnují vkládání speciálních znaků do všech vstupních polí. Zkuste do formulářů zadat obyčejný apostrof a sledujte, zda aplikace vyhodí chybu. Pokud ano, nezanedbávejte to – je to signál, že někde dochází k nedostatečnému ošetření. Dbejte také na to, aby databázový účet používaný aplikací měl pouze nezbytná oprávnění. Oddělte přístup pro čtení, zápis a správu. Tím omezíte škody, pokud k průniku dojde.
Častým omylem je také synchronizace všech akcí s API. Redux není určen k tomu, aby každý požadavek na server generoval akce a reducery. Pro asynchronní logiku je vhodnější použít middleware jako thunk nebo saga. Thunk je jednodušší, saga dává více kontroly. U thunku si dejte pozor na to, aby akce neobsahovaly příliš mnoho logiky. Rozdělte je na menší kroky: začátek požadavku, úspěch, selhání. Tím získáte přehled o tom, co se děje, a můžete snadno přidat loading stavy.
SQL injection není problém, který by se dal vyřešit jednou provždy. Vyžaduje průběžnou pozornost a kódování s ohledem na bezpečnost. Při každém novém dotazu se zeptejte, zda obsahuje uživatelský vstup, a pokud ano, použijte parametrizaci. Pravidelně aktualizujte databázové ovladače a frameworky, které často obsahují opravy známých zranitelností. Investice do prevence se mnohonásobně vrátí, protože náklady na řešení úniku dat jsou obvykle výrazně vyšší než čas strávený psaním bezpečného kódu.
Nezapomínejte na validaci kódu a testování v různých prohlížečích. Co funguje ve vašem prohlížeči, nemusí fungovat jinde. Vždy si ověřte, že stránka vypadá dobře i bez JavaScriptu, který je pro základní HTML a CSS zbytečný. Při psaní CSS používejte selektory efektivně – místo mnoha tříd zkuste využít dědictví stylů a kontextové selektory. Název třídy by měl vystihovat účel prvku, ne jeho vzhled, takže místo „modra-pisma” použijte „upozorneni”.
Jakmile máte Docker v provozu, začněte s jednoduchým projektem. Vytvořte složku, do ní vložte soubor s názvem Dockerfile a do něj napište následující řádky: FROM node:20-alpine, WORKDIR /app, COPY . ., RUN npm install a CMD [“node”, “server.js”]. Tento Dockerfile říká Dockeru, aby použil oficiální obraz Node.js, nastavil pracovní složku, zkopíroval soubory, nainstaloval závislosti a spustil server. Poté v terminálu spusťte docker build -t moje-aplikace . (tečka na konci je důležitá – označuje aktuální složku). Po úspěšném buildu spustíte kontejner příkazem docker run -p 3000:3000 moje-aplikace. Parametr -p mapuje port z kontejneru na váš počítač, takže aplikaci otevřete v prohlížeči na adrese localhost:3000.
In case you liked this post and also you want to acquire details relating to koukněte sem generously stop by the webpage.
