
Harry James
0
1550
72
Slijedi nekoliko najčešćih grešaka u programiranju i kodiranju koje su napravili programeri. Te su pogreške rezultirale raširenim kvarovima, krađom podataka, upadima i još mnogo toga. Neke od pogrešaka Top 10 web lokacija za kodove pogrešaka i rješavanje problema Top 10 Web stranice za kodove pogrešaka i rješavanje problema specifične su za određene jezike kao što su C, C ++ itd., Ali neke su uobičajene na drugim jezicima kao što su Java, JavaScript, Python itd..
Preporučujemo vam da ovaj popis često provjeravate kako biste bili sigurni da ništa od toga ne unosi u svoj kod. Ovaj je popis razvrstan po redoslijedu važnosti od vrha do dna.
1. Buffer Overflow
Prepuniranje pufera pojavljuje se kada se podaci zapisuju u međuspremnik koji stoji iza njegovog kraja. Može se pojaviti zbog neispravnih izračuna položaja pisanja. Ili kontinuirano pisanje u međuspremnik bez provjere duljine. Bez obzira na razlog, ova je pogreška jedna od najčešćih i rezultirala je velikim podvizima. Neki od njih uključuju Morris Internet Worm 6 računalnih virusa koji su promijenili svijet 6 računalnih virusa koji su promijenili svijet Jučer smo pogledali neke od najštetnijih računalnih virusa u povijesti, a danas ćemo istražiti neke od umjesto toga oni opskurniji. Uvjet “virus” nije priključen na zlonamjerni softver ... 1988., W32 / Nimda crv 2001., a Sendmail greška 2003..
Primjer C:
char array [6] = "zdravo"; strcat (niz, ", joe"); / * <- This line causes a buffer overflow. */
Kreditna slika: Cyber4All @Towson
2. SQL ubrizgavanje
SQL ubrizgavanje Što je SQL ubrizgavanje? [MakeUseOf objašnjava] Što je SQL ubrizgavanje? [MakeUseOf objašnjava] Svijet internetske sigurnosti muči otvorene luke, stražnju stranu, sigurnosne rupe, Trojani, crvi, ranjivost vatrozida i mnoštvo drugih problema koji nas svakodnevno drže na nogama. Za privatne korisnike… je tehnika ubrizgavanja SQL naredbi u korisnički unos, tako da te naredbe izravno izvršava baza podataka. To omogućuje napadaču da izvršava zlonamjerne radnje poput brisanja tablica, ispuštanja baza podataka, krađe podataka i još mnogo toga.
Ključni uzrok uspješnih napada SQL Injection je taj što aplikacijski softver koji obrađuje korisnički unos obavlja nedovoljno provjere i provjere unosa prije nego što ga proslijedi u bazu podataka za izvršavanje.
Primjer Java:
// Slijedi vrijednost parametra sa SQL injekcijskim nizom korisničko ime = "joe"; izbriši od korisnika gdje je korisničko ime poput "%"; Priključak con =…; // uspostavi vezu s bazom podataka // Kada se ova izjava izvrši, svi se korisnici brišu iz baze podataka. con.createStatement (). Execute ("ažuriraj korisnički skup logged_in = 1 gdje je korisničko ime = '" + korisničko ime + "'");
3. ubrizgavanje naredbe OS-a
OS naredba ubrizgavanje nastaje kada unos koji je odredio korisnik izravno predaje operativnom sustavu radi izvršavanja aplikacije bez odgovarajuće provjere. Takvu bi operaciju aplikacija mogla koristiti za korištenje postojeće naredbe u OS-u. Kad aplikacija prođe korisnički unos bez odgovarajuće provjere, napadaču se otvara put za korištenje pametnih konstrukcija za izvršavanje zlonamjernih naredbi. Te naredbe mogu biti, na primjer, za brisanje datoteka, krađu podataka, mijenjanje dopuštenja za datoteke i još mnogo toga.
4. Cijeli preljev ili Wraparound
Integer Osnove računalnog programiranja 101 - Varijable i DataTypes Osnove računalnog programiranja 101 - Varijable i DataTypes Upoznavši i razgovarajući malo o objektno orijentiranom programiranju prije i odakle dolazi njegov imenjak, mislio sam da je vrijeme da prođemo apsolutne osnove programiranja na nejezički specifičan način. Ova ... Greška prelijevanja pojavljuje se kada pokušate pohraniti veću vrijednost u integralni tip nego što će odgovarati. Kad se to dogodi, veća vrijednost je skraćena, a operacija završava pohranjujući nepredvidive rezultate. Na primjer, dvobajtni nepotpisani kratki spoj može pohraniti maksimalnu vrijednost 65535. Zamislite sada dodavanje dvije kratke vrijednosti kao što su 65530 i 10 i rezultat pohranite u kratko. Rezultat (65545) neće se uklopiti u kratko, ostavljajući neku nepredvidivu vrijednost u cilju kratkom kao rezultat skraćenja. Ako kasnije koristite ovu vrijednost u drugoj operaciji (kao što je indeks niza), na kraju ćete dobiti nepredvidive rezultate.
Primjer C:
kratak a = 65530, b = 10; kratak c = a + b; // na mom računalu, c ima neočekivanu vrijednost: 4
5. Nepravilna provjera indeksa matrice
Još jedna vrlo česta pogreška u softveru je Nepravilna provjera indeksa matrice. Nastaje kada pristupate nizu Kako rade nizovi i popisi u Python-u. Kako nizovi i popisi rade u Python Matrasu i popisi su neke od najkorisnijih struktura podataka u programiranju - iako ih malo ljudi koristi u svom punom potencijalu. pomoću indeksa koji leži izvan granica niza. Kada pristupite lokaciji izvan važećih granica podataka programa, na kraju imate pogrešku u pristupu memoriji (poznata i kao kršenje segmentacije). Kad se memorijska lokacija nalazi unutar granica podataka, ali izvan polja, gledate na oštećenje memorije dok pišete na takve lokacije.
Ova vrsta grešaka češća je kod C i C ++, ali mogu se pojaviti na bilo kojem jeziku, čak i onima s automatskim upravljanjem memorijom kao što su Java, JavaScript, Python itd. Jedini način na koji te pogreške možete umanjiti u softveru jeste vi, programera, koji se kodiranja dovoljno paze.
6. Dodijelite resurse bez ograničenja
Dodjela memorije vrlo je česta za C i C ++ jer je upravljanje svim memorijama na tim jezicima ručno. Dodjeljivanje memorije bez odgovarajuće provjere dodjeljene veličine može prouzročiti neuspjeh dodjele. Kada se rezultat ove raspodjele ne provjerava, ali izravno koristi, imate recept za katastrofu.
Ove su vrste pogrešaka moguće i bez ručnog upravljanja memorijom kao što su Java, JavaScript i Python prilikom dodjele nizova. Stoga se mora pažljivo voditi raspodjela nizova na tim jezicima.
Druga mogućnost ove pogreške pojavljuje se u stvaranju drugih resursa, poput rukohvata datoteka ili ručica veze, bez odgovarajuće provjere. Nepravilno zatvaranje ovih resursa kada završite s njihovim korištenjem najčešći je način da se dostignu ta ograničenja resursa.
7. Isteklo prenošenje pokazivača
Na jezicima poput C i C ++ memorija se može osloboditi kad završite s njom. Upotreba pokazivača Uvod u Pokazivače za programere Uvod u Pokazivače za programere Bez obzira da li ga shvatite ili ne, velika većina programa koje ste koristili na neki način koristi pokazivače. Kao programer, morate razumjeti kako rade pokazivači. u ovaj blok memorije koji je već oslobođen je greška. Ova vrsta pogreške također je bila u vijestima zbog većih kvarova, tako da biste dobro provjerili ne pojavljuje li se ovakva greška u vašem kodu.
8. Odstupanje od nule pointera
Pokazivač može imati nultu vrijednost prije nego što se pravilno inicijalizira (ili nakon oslobađanja memorije). Dereferenciranje takvog pokazivača uzrokuje pogrešku null pointer (naziva se NullPointerException na Javi). Vrlo je česta kod C, C ++ kao i Jave, a definitivno je moguća i na drugim jezicima. Trebali biste dovoljno paziti na svoj kôd da biste izbjegli ovu vrstu pogreške.
Kreditna slika: J.T.Presta
9. Nedostaje inicijalizacija
Lokalne varijable su one koje su deklarisane unutar funkcije (ili bloka) i prestaju postojati na kraju funkcije. Ove se varijable raspoređuju na hrpi i imat će nasumično smeće prilikom prvog deklariranja. Kao programer vaša je dužnost dodijeliti odgovarajućim vrijednostima tim varijablama čim su deklarirane. Korištenje njih prije takve inicijalizacije rezultira u Nedostaje inicijalizacija greška i definitivno će završiti padom (ili nečim razornijim).
Primjer C:
int pos; char buffer [] = "zdravo svijetu"; // ovaj redak može ispisati smeće i / ili rušiti program jer pozicija nije inicijalizirana. printf ("Vrijednost znaka u poz% d je:% c \ n", pos, međuspremnik [pos]);
10. Slomljeni ili rizični kriptografski algoritam
Svijet kriptografije Kako funkcionira enkripcija i je li zaista sigurna? Kako funkcionira enkripcija i je li stvarno sigurna? neprestano se razvija. Ono što je danas prihvatljivo, sutra možda više nije prihvatljivo. To bi moglo biti zbog sve veće snage računala na kojima računalni zadaci za koje se danas smatra da bi trajali godinama mogu trajati nekoliko minuta. Ili netko pronalazi novi način da probije određeni algoritam koji taj algoritam čini beskorisnim. Stoga morate stalno pratiti razvoj kriptografije i ažurirati svoj kôd (ako se još uvijek koristi) ako se u algoritmima koje koristite otkriju ranjivosti i hakovi.
Na primjer, SHA-1, koji je algoritam raspršivanja, više se ne preporučuje za izradu heševa. U 2005. otkriveni su napadi na ovaj algoritam, pa se preporučuju SHA-2 ili SHA-3. Ako u bilo kojem trenutku vaš kôd koristi SHA-1, morat ćete ga zamijeniti preporučenim ako se softver i dalje koristi. U suprotnom riskirate da je vaša aplikacija otvorena za napad.
Sažetak
U ovom smo članku opisali nekoliko najčešćih grešaka u programiranju i kodiranju. Na ovaj se popis možete odnositi često kako biste bili sigurni da ih izbjegavate.
Jeste li naišli na ove ili druge pogreške koje bi mogle dovesti do velikog hakovanja vaše web stranice ili aplikacije? Javite nam u komentarima u nastavku.
Kreditna slika: ajfile / Depositphotos