10 mest vanlige programmerings- og kodingsfeil

10 mest vanlige programmerings- og kodingsfeil / programmering

Følgende er noen av de vanligste programmerings- og kodingsfeilene som utvikles. Disse feilene har resultert i omfattende utbrudd, datatyveri, innbrudd og mer. Noen av feilene Topp 10 nettsteder for feilkoder og feilsøking Topp 10 nettsteder for feilkoder og feilsøking Les mer er bestemte for visse språk som C, C ++, etc., men noen er felles på andre språk som Java, JavaScript, Python osv..

Vi anbefaler at du sjekker denne listen ofte for å sørge for at du ikke lager noen av disse i koden din. Denne listen er sortert i rekkefølge av betydning fra topp til bunn.

1. Buffer Overflow

Buffer Overflow oppstår når data skrives inn i en buffer forbi sin ende. Det kan oppstå på grunn av feilaktige beregninger av skriveposisjonen. Eller fortsett å skrive inn en buffer uten å sjekke lengden. Uansett årsak, er denne feilen en av de vanligste og har resultert i store utnyttelser. Noen av disse inkluderer Morris Internet Worm 6 Datavirus som forandret verden 6 Datavirus som forandret verden I går tok vi en titt på noen av de mest skadelige høyprofilerte datavirusene i historien, og i dag skal vi utforske noen av jo mer obskure i stedet. Begrepet “virus” ble ikke knyttet til skadelig programvare ... Les mer i 1988, W32 / Nimda orm i 2001, og Sendmail feil i 2003.

A C Eksempel:

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

Bildekreditt: Cyber4All @Towson

2. SQL Injection

SQL-injeksjon Hva er en SQL-injeksjon? [MakeUseOf Forklarer] Hva er en SQL-injeksjon? [MakeUseOf Forklarer] Verden av Internett-sikkerhet er plaget av åpne porter, bakdører, sikkerhetshull, trojanere, ormer, brannmur sårbarheter og en rekke andre problemer som holder oss alle på tærne hver dag. For private brukere, ... Les mer er en techique for å injisere SQL-kommandoer i brukerinngang slik at disse kommandoene blir direkte utført av databasen. Dette gjør det mulig for angriperen å utføre skadelige handlinger, slik at du sletter tabeller, slipper databaser, stjeler data og mye mer.

En viktig årsak til at SQL Injection-angrep lykkes er at programvaren som behandler brukerinngang, utfører utilstrekkelig kontroll og validering på inngangen før den overføres til databasen for utførelse.

Et Java-eksempel:

// Følgende er en parameterverdi med SQL-injeksjon Strenge brukernavn = "joe"; slett fra bruker der brukernavn som '%'; Tilkobling con = ...; // opprette forbindelse til database // Når denne setningen utføres, slettes alle brukere fra databasen. con.createStatement (). utfør ("Oppdater bruker set logged_in = 1 der brukernavn = '" + brukernavn + "'"); 

3. OS Command Injection

OS Command Injection oppstår når bruker spesifisert inngang er direkte overført til operativsystemet for exeksjon av programmet uten riktig vetting. En slik operasjon kan brukes av et program for å bruke en eksisterende kommando på operativsystemet. Når applikasjonen overfører brukerinngang uten å korrekt validere den, baner det veien for en angriper å bruke klare konstruksjoner for å utføre skadelige kommandoer. Disse kommandoene kan for eksempel være å slette filer, stjele data, endre tillatelser på filer og mer.

4. Integrer Overflow eller Wraparound

En helhet Grunnleggende om dataprogrammering 101 - Variabler og datatyper Grunnleggende om dataprogrammering 101 - Variabler og datatyper Etter å ha introdusert og snakket litt om Objektorientert Programmering før og hvor dets navnebringer kommer fra, tenkte jeg at det er på tide at vi går gjennom det absolutt grunnleggende programmering på en ikke-språkspesifikk måte. Dette ... Les mer Overflowfeil oppstår når du prøver å lagre en større verdi i en integrert type enn det som passer. Når dette skjer, blir den større verdien avkortet, og operasjonen slutter å lagre et uforutsigbart resultat. For eksempel kan en 2-byte usignert kort lagre en maksimal verdi på 65535. Nå, tenk å legge til to korte verdier som 65530 og 10 og lagre resultatet på kort tid. Resultatet (65545) vil ikke passe inn i en kort, noe som gir noe uforutsigbar verdi i målet kort som følge av trunking. Når du senere bruker denne verdien i en annen operasjon (for eksempel en arrayindeks), vil du ende opp med uforutsigbare resultater.

A C Eksempel:

kort a = 65530, b = 10; kort c = a + b; // på min datamaskin har c den uventede verdien: 4 

5. Feil validering av en array-indeks

En annen svært vanlig feil som oppstår i programvare er Feil validering av en array-indeks. Det oppstår når du får tilgang til en rekkefølge. Hvordan Arrayer og Lister Arbeider i Python. Hvordan Arrayer og Lister Arbeider i Python Arrayer og lister er noen av de mest nyttige datastrukturene i programmering - selv om få personer bruker dem til sitt fulle potensiale. Les mer ved hjelp av en indeks som ligger utenfor rammen av matrisen. Når du får tilgang til et sted utenfor programmets gyldige datagrense, kommer du opp med en minnefeil (også kjent som et segmenteringsbrudd). Når minnestedet ligger innenfor datagrunnene, men utenfor matrisen, ser du på minnekorrupsjon når du skriver til slike steder.

Denne typen feil er vanligere med C og C ++, men kan oppstå med hvilket som helst språk, selv de med automatisk minnehåndtering, for eksempel Java, JavaScript, Python, etc. Den eneste måten slike feil kan reduseres i programvare, er av deg, den programmerer, utøver tilstrekkelig omsorg under koding.

6. Allokere ressurser uten grenser

Minneallokering er svært vanlig i C og C ++, siden all minnehåndtering på disse språkene er manuell. Allokering av minne uten riktig validering av størrelsen som er tildelt, kan føre til at tildelingen mislykkes. Når resultatet av denne tildelingen ikke er merket, men brukt direkte, har du en oppskrift på katastrofe.

Denne typen feil er også mulig uten manuell minnehåndtering, for eksempel Java, JavaScript og Python når du tildeler arrayer. Så riktig omsorg må utøves ved tildeling av arrays på disse språkene.

En annen mulighet for at denne feilen oppstår, er å skape andre ressurser som filhåndtak eller tilkoblingshåndter uten riktig kontroll. Ikke riktig lukking av disse ressursene når du er ferdig med å bruke dem, er den vanligste måten at disse ressursgrensene er nådd.

7. Utløpt Pointer Dereference

På språk som C og C + + kan minne bli frigjort når du er ferdig med det. Bruke en peker En introduksjon til pekere for programmerere En introduksjon til pekere for programmerere Uansett om du skjønner det eller ikke, har de aller fleste programmer du bruker, gjort bruk av pekere på en eller annen måte. Som programmerer må du forstå hvordan pekere jobber. Les mer til denne blokken av minne som allerede er frigjort, er en feil. Denne typen feil har også vært i nyhetene på grunn av store utbrudd, så du vil gjøre det bra å bekrefte at denne typen feil ikke skjer i koden din.

8. Null Pointer Dereference

En peker kan ha null verdi før den er riktig initialisert (eller etter at minnet er frigjort). Dereferrering av en slik pekeren forårsaker en nullpekerfeil (kalt NullPointerException i Java). Det er veldig vanlig i C, C + + samt Java, og definitivt mulig på andre språk også. Du bør ta tilstrekkelig forsiktighet i koden din for å unngå denne typen feil.

Bildekreditt: J.T.Presta

9. Mangler initialisering

Lokale variabler er de som er deklarert innenfor en funksjon (eller en blokk) og slutter å eksistere ved slutten av funksjonen. Disse variablene er allokert på stakken og vil ha tilfeldig søppel når de først erklæres. Som programmerer er det din plikt å tildele en passende verdi til disse variablene så snart de er erklært. Bruke dem før slik initialisering resulterer i Mangler initialisering feil og vil mest definitivt ende i et krasj (eller noe mer ødeleggende).

A C Eksempel:

int pos; char buffer [] = "hei verden"; // denne linjen kan skrive ut søppel og / eller kan krasje programmet siden pos ikke er initialisert. printf ("Karakter på pos% d er:% c \ n", pos, buffer [pos]); 

10. Broken eller risikabel kryptografisk algoritme

Kryptografiens verden Hvordan virker kryptering, og er det virkelig trygt? Hvordan virker kryptering, og er det virkelig trygt? Les mer er i stadig utvikling. Det som er akseptabelt i dag, er ikke lenger akseptabelt i morgen. Dette kan skyldes den økende kraften til datamaskiner hvor databehandlingsoppgaver som antas å ta år i dag, kan ta minutter i morgen. Eller noen finner en ny måte å knekke en bestemt algoritme som gjør algoritmen ubrukelig. Så du må hele tiden holde deg oppdatert om utviklingen i kryptering og oppdatere koden din (hvis den fortsatt er i bruk) hvis sårbarheter og hack er oppdaget i algoritmer du bruker.

For eksempel er SHA-1, som er en hashing-algoritme, ikke lenger anbefalt for databehandling av hashes. I 2005 ble det oppdaget angrep mot denne algoritmen, og SHA-2 eller SHA-3 anbefales. Så hvis koden din bruker SHA-1 når som helst, må du erstatte den med den anbefalte en hvis programvaren fortsatt brukes. Ellers risikerer du at søknaden din er åpen for å angripe.

Sammendrag

Vi har dekket noen av de vanligste programmerings- og kodingsfeilene i denne artikkelen. Du kan ofte henvise til denne listen for å sikre at du unngår dem.

Har du kommet over disse eller andre feil som kan føre til en stor hack av ditt nettsted eller søknad? Gi oss beskjed i kommentarene nedenfor.

Bildekreditt: ajfile / Depositphotos

Utforsk mer om: Hacking.