10 Nejčastější chyby v programování a kódování

  • Mark Lucas
  • 0
  • 1015
  • 236
reklama

Následují některé z nejčastějších chyb programování a kódování, kterých se vývojáři dopustili. Tyto chyby vyústily v rozsáhlé výpadky, krádež dat, narušení a další. Některé z chyb Top 10 webových stránek pro chybové kódy a řešení problémů Top 10 webových stránek pro chybové kódy a řešení problémů jsou specifické pro určité jazyky, jako jsou C, C ++ atd., Ale některé jsou běžné v jiných jazycích, jako je Java, JavaScript, Python atd..

Doporučujeme vám tento seznam často kontrolovat, abyste se ujistili, že nic z toho v kódu nevyrábíte. Tento seznam je seřazen podle důležitosti od shora dolů.

1. Přetečení vyrovnávací paměti

Přetečení vyrovnávací paměti nastane, když jsou data zapsána do vyrovnávací paměti po jejím konci. Může to nastat v důsledku chybných výpočtů pozice zápisu. Nebo kontinuální zápis do vyrovnávací paměti bez kontroly délky. Ať už je důvod jakýkoli, tato chyba je jednou z nejčastějších a vedla k velkým zneužitím. Mezi ně patří počítačové viry Morris Internet Worm 6, které změnily svět 6 Počítačové viry, které změnily svět Včera jsme se podívali na některé z nejškodlivějších počítačových virů v historii, a dnes prozkoumáme některé z místo toho ty nejasnější. Termín “virus” nebyl připojen k malwaru ... v roce 1988, červ W32 / Nimda v roce 2001, a chyba Sendmail v roce 2003.

Příklad A C:

char array [6] = "ahoj"; strcat (array, ", joe"); / * <- This line causes a buffer overflow. */

Obrázek Kredit: Cyber4All @Towson

2. Vstřikování SQL

SQL Injection Co je to SQL Injection? [MakeUseOf vysvětluje] Co je injekce SQL? [MakeUseOf vysvětluje] Svět bezpečnosti internetu je sužován otevřenými porty, zadními vrátkami, bezpečnostními dírami, trojskými koni, červy, zranitelnostmi v bráně firewall a spoustou dalších problémů, které nás každý den drží na nohou. Pro soukromé uživatele je… technika pro vkládání příkazů SQL do vstupu uživatele tak, aby tyto příkazy byly přímo prováděny databází. To útočníkovi umožňuje provádět škodlivé činy, jako jsou mazání tabulek, vyřazování databází, krádež dat a mnoho dalšího.

Klíčovou příčinou úspěšných útoků SQL Injection je to, že aplikační software, který zpracovává vstup uživatele, provádí před vstupem do databáze k provedení nedostatečné kontroly a ověření na vstupu.

Příklad Java:

// Následuje hodnota parametru s SQL injection String username = "joe '; odstranit od uživatele, kde username jako'%"; Připojení con =…; // vytvoření připojení k databázi // Po spuštění tohoto příkazu budou všichni uživatelé z databáze vymazáni. con.createStatement (). execute ("update user set log_in = 1 kde username = '" + username + "'"); 

3. Vstřikování příkazů OS

OS Command Injection vzniká, když uživatelem zadaný vstup je přímo předán operačnímu systému k exekuci aplikací bez řádného prověření. Takovou operaci může aplikace použít k použití existujícího příkazu v OS. Když aplikace předá vstup uživatele bez řádného ověření, připravuje útočník cestu k použití chytrých konstruktů k provádění škodlivých příkazů. Těmito příkazy může být například mazání souborů, odcizení dat, změna oprávnění k souborům a další.

4. Přetečení celého čísla nebo obtékání

Celé číslo Základy počítačového programování 101 - Proměnné a typy dat Základy počítačového programování 101 - Proměnné a typy dat Po představení a mluvení o objektově orientovaném programování dříve a odkud pochází jeho jmenovec, jsem si myslel, že je čas projít absolutními základy programování jiným než jazykovým způsobem. Tato ... Chyba přetečení nastane, když se pokusíte uložit větší hodnotu do integrálního typu, než se vejde. Když k tomu dojde, větší hodnota se zkrátí a operace skončí uložením nepředvídatelného výsledku. Například 2bajtový nepodepsaný krátký může uložit maximální hodnotu 65535. Nyní si představte přidání dvou krátkých hodnot, jako je 65530 a 10, a výsledek uložte do krátkého. Výsledek (65545) se nevejde do krátké, takže v důsledku zkrácení zůstane v cíli krátká nepředvídatelná hodnota. Při následném použití této hodnoty v jiné operaci (jako je index pole) skončí s nepředvídatelnými výsledky.

Příklad A C:

krátká a = 65530, b = 10; krátké c = a + b; // na mém počítači, c má neočekávanou hodnotu: 4 

5. Nesprávné ověření pole indexu

Další velmi častou chybou, se kterou se software setká, je Nesprávné ověření pole indexu. Vzniká při přístupu k poli Jak pole a seznamy fungují v Pythonu Jak pole a seznamy fungují v Pythonu Pole a seznamy jsou některé z nejužitečnějších datových struktur v programování - i když je jich jen málo lidí plně využívá. pomocí indexu, který leží mimo hranice pole. Při přístupu k umístění mimo platné datové hranice programu skončí chyba přístupu do paměti (známé také jako narušení segmentace). Pokud umístění paměti leží v mezích dat, ale mimo pole, při zápisu do těchto umístění se díváte na poškození paměti.

Tyto typy chyb jsou častější u C a C ++, ale mohou nastat u jakéhokoli jazyka, dokonce i u těch s automatickou správou paměti, jako je Java, JavaScript, Python atd. Jediným způsobem, jak lze takové chyby v softwaru zmírnit, je programátor, věnovat dostatečnou péči během kódování.

6. Přidělte zdroje bez omezení

Přidělení paměti je v C a C ++ velmi běžné, protože veškerá správa paměti v těchto jazycích je manuální. Přidělení paměti bez řádného ověření přidělené velikosti může způsobit selhání alokace. Pokud není výsledek tohoto přidělení zkontrolován, ale přímo použit, máte recept na katastrofu.

Tyto typy chyb jsou také možné bez ručního řízení paměti, jako je Java, JavaScript a Python při přidělování polí. Při přidělování polí v těchto jazycích je tedy třeba věnovat náležitou péči.

Další možností vzniku této chyby je vytvoření dalších prostředků, jako jsou popisovače souborů nebo popisovače připojení, bez řádné kontroly. Nejběžnějším způsobem, jak těchto limitů zdrojů dosáhnout, není správné uzavření těchto prostředků, když je dokončíte.

7. Vypršení platnosti ukazatele

V jazycích jako C a C ++ může být paměť uvolněna, jakmile s ní budete hotovi. Použití ukazatele Úvod do ukazatelů pro programátory Úvod do ukazatelů pro programátory Ať už si to uvědomujete nebo ne, drtivá většina programů, které jste použili, nějakým způsobem využívá ukazatele. Jako programátor musíte pochopit, jak fungují ukazatele. do tohoto bloku paměti, který již byl uvolněn, je chyba. Tento typ chyby byl také ve zprávách kvůli závažným výpadkům, takže byste si měli dobře ověřit, že k takové chybě nedochází v kódu.

8. Dereference nulového ukazatele

Ukazatel může mít nulovou hodnotu, než bude řádně inicializován (nebo po uvolnění paměti). Dereferencování takového ukazatele způsobí chybu nulového ukazatele (nazývá se NullPointerException v Javě). To je velmi běžné v C, C ++ a Java, a rozhodně možné i v jiných jazycích. V kódu byste měli být dostatečně opatrní, abyste se vyhnuli této chybě.

Obrazový kredit: J.T.Presta

9. Chybějící inicializace

Lokální proměnné jsou ty, které jsou deklarovány v rámci funkce (nebo bloku) a přestanou existovat na konci funkce. Tyto proměnné jsou přiděleny na zásobníku a budou mít náhodné smetí, když jsou poprvé deklarovány. Jako programátor je vaší povinností přiřadit vhodnou hodnotu těmto proměnným, jakmile jsou deklarovány. Jejich použití před takovou inicializací má za následek Chybějící inicializace chyba a určitě skončí pádem (nebo něčím ničivějším).

Příklad A C:

int pos; char buffer [] = "ahoj svět"; // tento řádek může tisknout odpadky a / nebo může selhat program, protože pos není inicializován. printf ("Hodnota znaku v pos% d je:% c \ n", pos, buffer [pos]); 

10. Rozbitý nebo riskantní kryptografický algoritmus

Svět kryptografie Jak funguje šifrování a je opravdu bezpečný? Jak funguje šifrování a je opravdu bezpečný? se neustále vyvíjí. To, co je dnes přijatelné, nemusí být přijatelné zítra. Může to být způsobeno zvyšováním výkonu počítačů, kde zítra mohou trvat výpočetní úkoly, které se dnes považují za roky, trvat minuty. Nebo někdo najde nový způsob, jak crackovat konkrétní algoritmus, který činí tento algoritmus zbytečným. Takže je třeba neustále udržovat přehled o vývoji v kryptografii a aktualizovat svůj kód (pokud se stále používá), pokud jsou v algoritmech, které používáte, objeveny zranitelnosti a hacky.

Například SHA-1, což je hashovací algoritmus, se již pro výpočet hashů nedoporučuje. V roce 2005 byly objeveny útoky proti tomuto algoritmu a jsou doporučeny SHA-2 nebo SHA-3. Pokud tedy váš kód v každém okamžiku používá SHA-1, budete jej muset nahradit doporučeným, pokud se software stále používá. Jinak riskujete, že je vaše aplikace otevřena k útoku.

souhrn

Pokryli jsme několik nejčastějších chyb programování a kódování v tomto článku. Na tento seznam se můžete často odvolávat, abyste se ujistili, že se jim vyhnete.

Narazili jste na tyto nebo jiné chyby, které by mohly vést k rozsáhlému zaseknutí vašeho webu nebo aplikace? Dejte nám vědět v komentářích níže.

Obrázek Kredit: ajfile / Depositphotos




Bisher hat noch niemand einen Kommentar zu diesem Artikel abgegeben.

O moderní technologii, jednoduché a cenově dostupné.
Váš průvodce ve světě moderních technologií. Naučte se, jak používat technologie a pomůcky, které nás každý den obklopují, a naučte se, jak objevovat na internetu zajímavé věci.