SQL injection vzniká ve chvíli, kdy se do textu databázového dotazu vkládá vstup od uživatele přímým spojováním řetězců. Útočník pak místo očekávané hodnoty pošle fragment SQL, který změní význam celého dotazu. Nejde přitom jen o přihlašovací formuláře. Zranitelné bývají vyhledávací pole, filtry v administraci, řazení tabulek, stránkování i importy souborů. Stačí jedno místo, kde se hodnota z požadavku ocitne v dotazu bez oddělení od kódu.
Proměnné deklarujte s jasným typem. int pro celá čísla, double pro desetinná, string pro text, bool pro pravdivostní hodnotu. C# je staticky typovaný, takže do proměnné typu int nelze uložit text bez převodu. Kompilátor to odmítne a je to výhoda, ne překážka. Zkuste malý program: načtěte dvě čísla, sečtěte je a výsledek vypište. Teprve na takovém cvičení pochopíte, jak spolu souvisí vstup, převod a výstup.
Ruční testování začíná na skutečném zařízení, ne v emulátoru. Emulátor je pohodlný, ale nepodchytí zahřívání telefonu, zpoždění dotyku ani chování systému při nízké baterii. První krok: nainstalujte aplikaci na dvě různé verze operačního systému a na dvě velikosti displeje. Projděte registraci, přihlášení, nákup a odhlášení. U každé obrazovky sledujte, zda se obsah vejde bez posouvání a zda tlačítka reagují na první dotyk. Typická chyba je testovat jen na jednom zařízení a domnívat se, že výsledek platí všude.
Do těla metody napište Console.WriteLine(“Ahoj”); a stiskněte kombinaci pro spuštění. Program se přeloží a v okně terminálu se objeví text. Tady přichází první častá chyba: zapomenutý středník nebo chybějící uvozovka. Vývojové prostředí na ně upozorní červeným podtržením ještě před spuštěním. Druhá chyba je špatně napsaný název metody – C# rozlišuje velká a malá písmena, takže „console.writeline” nefunguje. Napověda s seznamem členů se zobrazí po napsání tečky a výrazně snižuje počet překlepů.
První konzolová aplikace v C# vypadá jako banalita, dokud člověk nezačne řešit, kde vlastně kód napsat a jak ho spustit. Nejjednodušší cesta vede přes vývojové prostředí s integrovaným terminálem. Po instalaci zvolte typ projektu Konzolová aplikace, zadejte název a nechte vygenerovat kostru. Dostanete soubor s metodou Main, což je vstupní bod programu. Pokud místo toho zvolíte šablonu s „top-level statements”, uvidíte jen jediný řádek s příkazem Console.WriteLine. Obě varianty jsou správné, jen se liší mírou výchozí struktury.
Od izolace k prvnímu spuštění Vytvořte testovací soubor pojmenovaný stejně jako testovaný modul, jen s příponou podle konvence vašeho jazyka. Uvnitř napište jednu testovací metodu, která připraví vstupy, zavolá funkci a porovná výsledek s očekávanou hodnotou. Nepřidávejte hned deset případů. Jeden test, jedno tvrzení. Pokud test selže, chcete přesně vědět, co je špatně. Spusťte testovací runner a sledujte výsledek. Červená je v pořádku, pokud odhalí skutečnou chybu v kódu nebo v očekávání.
Malé funkce a jediná odpovědnost Funkce, která dělá pět věcí, se nedá testovat ani znovu použít. Rozdělte ji tak, aby každá část měla jeden úkol a byla pojmenovaná. Když z názvu funkce nejde poznat, co dělá, je příliš velká. Praktické pravidlo: pokud se funkce nevejde na obrazovku, pravděpodobně dělá víc, než by měla. Dlouhé funkce navíc svádějí k opakování stejných bloků kódu na více místech, což je další častý zdroj chyb.
První unit test vzniká nejlépe tam, kde už máte malou funkci, která dělá jednu věc a vrací předvídatelný výsledek. Vyberte si metodu, jež nezávisí na databázi, souborovém systému ani na aktuálním čase. Pokud takovou nemáte, rozložte větší celek na menší části. Testování celé aplikace najednou je cesta k pomalým a křehkým testům. Začněte od nejjednoduššího chování: například funkce, která sečte dvě čísla nebo ověří formát vstupu.
Dávejte pozor na tichý zdroj chyb: porovnávání. Operátor == převádí typy a občas vrátí výsledek, který nikdo nečekal. Používejte === a !==, dokud k tomu nemáte skutečný důvod. Stejně tak var dnes nemá v běžném kódu co dělat; použijte const, a když hodnotu měníte, let. Zamezíte tím mnoha chybám, které vznikají kvůli chování rozsahu platnosti.
Opakovaný kód nekopírujte, ale vytáhněte do samostatné funkce nebo konstanty. Platí to i pro magické hodnoty: if (status === 3) nic neznamená, zatímco if (status === StavObjednavky.Zrusena) je jasné okamžitě. Stejně tak čísla a řetězce, které se v kódu opakují, patří do pojmenované konstanty na jednom místě. Když se hodnota změní, upravíte ji jednou, ne na deseti místech.
Nakonec si nastavení otestujte na skutečném souboru od každého jazyka. Otevřete je vedle sebe, zkuste formátování, našeptávání i spuštění testů. Pokud něco nefunguje, vypněte rozšíření po jednom a sledujte, co se změní. Dokumentace k jazykům a konfiguraci editoru bývá obsáhlá, ale praktický test odhalí víc než hodina čtení. Jakmile prostředí jednou sedne, přidání dalšího jazyka je otázka pár minut, ne dnů.
If you treasured this article so you would like to receive more info with regards to discuss generously visit our page.