Jak se bránit SQL injection v praxi
본문
Typickou chybou je spoléhat se na generátor kódu, který vytvoří SQL automaticky. I když je pohodlný, výsledný kód bývá neefektivní nebo těžko čitelný. Místo toho si zvykněte psát dotazy ručně a IDE používejte pro kontrolu syntaxe a doplňování. Další častou pastí je podpora pouze dialektu jednoho dodavatele – pokud přecházíte z MySQL na PostgreSQL, zjistěte, zda IDE umí převést datové typy a funkce. Jinak vás čeká ruční oprava mnoha chyb.
If you have any questions with regards to wherever and how to use zdroj, you can make contact with us at our web-site. Při odhadování času na vývojový úkol se snadno zaměříme na viditelné programování a zapomeneme na činnosti, které zaberou překvapivě mnoho času. Přitom právě tyto skryté činnosti často způsobují, že se odhady nedaří dodržet. Mezi ně patří například analýza zadání, hledání souvislostí v existujícím kódu, psaní testů, konfigurace prostředí, koordinace s kolegy nebo dokumentace. Pokud je do odhadu nezahrnete, bude váš plán nerealistický a projekty skončí ve skluzu.
Když projekt roste, testovací pyramida se často začne bortit. Nejprve převažují rychlé unit testy, ale jakmile přibývají závislosti a integrace, tlak na pokrytí scénářů napříč komponentami roste. Výsledkem bývá změť integračních testů, které jsou pomalé, křehké a vyžadují složité nastavení. Základní pravidlo zní: unit testy mají tvořit většinu, integrační testy jen doplňkovou vrstvu. Pokud toto rozložení začne být opačné, je čas zasáhnout, než se údržba testů stane noční můrou.
Důležité je také sledovat poměr počtu testů a jejich času. Pokud integrační testy tvoří více než čtvrtinu všech testů, ale zabírají 90 % času běhu, je to signál k revizi. Zkuste u nejpomalejších testů zjistit, zda nepoužívají zbytečně reálné závislosti. Často stačí vyměnit databázi za lehčí variantu (např. embedded) nebo zredukovat počet volání externích služeb pomocí smyček a kombinací vstupů. Nezapomínejte, že každý integrační test by měl být nezávislý a měl by běžet v náhodném pořadí, což mnohé problémy odhalí už při vývoji.
Na závěr si osvojte pravidlo: commitovat byste měli často, ale ideálně vždy, když je kód v použitelném stavu. Vyhnete se tak ztrátě práce a budete mít jasnou historii. Pokud děláte něco experimentálního, vytvořte si větev. Než začnete cokoli verzovat, rozmyslete si, co všechno chcete mít pod kontrolou. Dobrá praxe je začít s verzováním od začátku projektu, ale pokud už máte hotový web, můžete ho klidně nahrát do repozitáře taky. Hlavní je začít a postupně si osvojovat další funkce, jako jsou tagy pro vydání nebo porovnávání verzí.
Základním pravidlem je nikdy neskládat SQL dotaz pomocí řetězců, do kterých vkládáte uživatelský vstup. Typická chyba vypadá takto: dotaz vytvoříte jako text, do něj připojíte hodnotu z formuláře a výsledek pošlete na databázi. Útočník do pole napíše něco jako „' OR 1=1 --", čímž změní logiku dotazu. Místo toho vždy používejte parametrizované dotazy, které poskytuje byt v panelákuětšina jazyků a frameworků. Například v PHP s PDO použijte připravené příkazy, v Pythonu se stejným způsobem chová rozhraní pro práci s databázemi. Parametry se předávají zvlášť a databáze je vždy interpretuje jako data, nikdy jako kód.
Ošetření vstupů a další obranné vrstvy Parametrizace je nejdůležitější, ale ne jediné opatření. Vždy také ošetřete vstupy na úrovni aplikace. Pro každé pole si definujte, co je v něm povoleno – čísla, text, e-mail, datum. Pokud čekáte číslo, použijte funkci, která převede hodnotu na celé číslo, a pokud to selže, vstup zahoďte. U textů omezte délku a odstraňte nebezpečné znaky, ale nespoléhejte na to, že escapování stačí – i ošetřený text může projít jinou cestou. Důležité je také nastavit minimální oprávnění pro databázového uživatele, kterého aplikace používá. Tento účet by neměl mít právo mazat tabulky nebo měnit schéma, pokud to není nezbytně nutné. Tím omezíte škody i v případě, že dojde k průniku.
Základní pravidlo zní: commit zpráva má odpovídat na otázku „co a proč", nikoli „jak zařídit malou kuchyni". Popište, co jste změnili (např. „přidán filtr pro neaktivní uživatele") a proč („aby se nesnižoval výkon při načítání seznamu"). Vyhněte se technickým detailům implementace – ty jsou vidět v diffu. Pokud je to nutné, doplňte je až do těla zprávy, ale hlavní sdělení musí být čitelné i bez otevření kódu.
Na závěr si osvojte zvyk po dokončení úkolu porovnat odhad se skutečností. Zapište si, co vám uniklo, a použijte to pro příště. Tím postupně zpřesníte své odhady a naučíte se vidět i méně zjevné činnosti. Nejde o to být dokonalý, ale o to, aby vaše odhady byly užitečné pro plánování a aby nebyly zdrojem zbytečného stresu. Skryté činnosti patří k vývoji, takže je berte jako nedílnou součást práce, ne jako něco, co by se mělo ignorovat.
댓글목록0
댓글 포인트 안내