Urážlivé programování - Offensive programming - Wikipedia
![]() | tento článek může být pro většinu čtenářů příliš technická na to, aby je pochopili.Prosinec 2016) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Urážlivé programování je název používaný pro pobočku obranné programování který se výslovně odchyluje od obranných zásad při řešení chyb vyplývajících z softwarové chyby. Ačkoli je název reakcí na extrémní interpretace obranného programování, nejsou tyto dva zásadně v konfliktu. Spíše útočné programování přidává výslovnou prioritu ne tolerování chyb na špatných místech: bodem, ve kterém se odchyluje od extrémních interpretací obranného programování, je upřednostňování přítomnosti chyb z obranné linie programu, aby byla očividně zřejmá nad hypotetickým bezpečnostním přínosem jejich tolerování.[1][2] Tato preference je také důvodem pro použití tvrzení.
Rozlišovací chyby
Předpokladem útočného programování je rozlišovat mezi očekávanými chybami přicházejícími mimo linii obrany programu, jakkoli nepravděpodobnými, a interními chybami, kterým lze předcházet, a které by se neměly stát, pokud by se všechny jeho softwarové komponenty chovaly podle očekávání.
Kontrastní příklady:
Očekávané chyby | Předcházet chybám |
---|---|
Neplatný vstup uživatele | Neplatné argumenty funkce |
Vyčerpání prostředků OS (jako je úložiště, paměť) | Hodnota mimo definovaný rozsah (např. výčet ) |
Selhání hardwaru (například síť, úložiště) | Nedokumentovaná návratová hodnota nebo výjimka |
Strategie detekce chyb
Urážlivé programování se zabývá selháním, aby se vyvrátily předpoklady programátora. Vytvoření chybové zprávy může být sekundárním cílem.
Strategie:
- Žádné zbytečné kontroly: Důvěra v to, že se ostatní softwarové komponenty chovají tak, jak je uvedeno, takže nedochází k papírování nad jakýmkoli neznámým problémem, je základním principem. Zejména již může být zaručeno, že dojde k selhání programu (v závislosti na programovacím jazyce nebo běžícím prostředí), například dereferencování a nulový ukazatel. Z tohoto důvodu jsou kontroly nulového ukazatele zbytečné z důvodu zastavení programu (lze je však použít k tisku chybových zpráv).
- Tvrzení - kontroly, které lze deaktivovat - jsou upřednostňovaným způsobem kontroly věcí, které by neměly být nutné kontrolovat, například smlouvy o návrhu mezi softwarovými komponentami.
- Odebrat záložní kód (bezvládný režim) a záložní data (výchozí hodnoty): Mohou skrýt vady hlavní implementace nebo z uživatelského hlediska skrýt skutečnost, že software funguje neoptimálně. Jako součást může být zapotřebí věnovat zvláštní pozornost neimplementovaným součástem tovární přejímací zkoušky dosud neimplementovaný kód není v žádné fázi testovaný vývoj zjistitelné selháním jednotkové testy.
- Odeberte kód zástupce (viz strategický vzor ): Zjednodušená cesta kódu může skrýt chyby v obecnější cestě kódu, pokud se generický kód téměř nikdy nespustí. Jelikož tyto dva mají produkovat stejný výsledek, lze ten zjednodušený vyloučit.
Viz také
Reference
- ^ „Urážlivé programování“. Cunningham & Cunningham, Inc.. Citováno 4. září 2016.
- ^ Broadwall, Johannes (25. září 2013). „Urážlivé programování“. Myšlení uvnitř větší krabice. Citováno 4. září 2016.