
Gabriel Brooks
0
4870
1129
Følgende er nogle af de mest almindelige programmerings- og kodningsfejl foretaget af udviklere. Disse fejl har resulteret i omfattende strømbrud, datatyveri, indtrængen og mere. Nogle af fejlene Top 10 websteder til fejlkoder & fejlfinding Top 10 websteder til fejlkoder & fejlfinding er særlige for visse sprog som C, C ++ osv. Men nogle er almindelige på tværs af andre sprog som Java, JavaScript, Python osv..
Vi anbefaler, at du ofte tjekker denne liste for at sikre dig, at du ikke angiver nogen af disse i din kode. Denne liste er sorteret i rækkefølge af betydning fra top til bund.
1. Bufferoverløb
Bufferoverløb opstår, når data skrives til en buffer forbi dens afslutning. Det kan opstå på grund af forkerte beregninger af skrivestillingen. Eller kontinuerlig skrivning i en buffer uden at kontrollere længden. Uanset årsagen, denne fejl er en af de mest almindelige og har resulteret i store udbytter. Nogle af disse inkluderer Morris Internet Worm 6 Computervirus, der ændrede verden 6 Computervirus, der ændrede verden I går kiggede vi på nogle af de mest skadelige højprofilerede computervirus i historien, og i dag skal vi udforske nogle af de mere uklare i stedet. Begrebet “virus” var ikke knyttet til malware… i 1988, W32 / Nimda orm i 2001 og Sendmail fejl i 2003.
Et C-eksempel:
char array [6] = "hej"; strcat (matrix, ", joe"); / * <- This line causes a buffer overflow. */
Billedkredit: Cyber4All @Towson
2. SQL-injektion
SQL-injektion Hvad er en SQL-injektion? [MakeUseOf Explains] Hvad er en SQL-injektion? [MakeUseOf Explains] En verden af internetsikkerhed er plaget med åbne havne, bagdøre, sikkerhedshuller, trojanere, orme, firewall sårbarheder og en række andre problemer, der holder os alle på tæerne hver dag. For private brugere er ... en teknik til at injicere SQL-kommandoer i brugerinput, så disse kommandoer udføres direkte af databasen. Dette gør det muligt for angriberen at udføre ondsindede handlinger såsom sletning af tabeller, tab af databaser, stjæling af data og meget mere.
En vigtig årsag til, at SQL-injektionsangreb lykkes, er, at applikationssoftwaren, der behandler brugerinput, udfører utilstrækkelig kontrol og validering af inputet, før den sendes til databasen til udførelse.
Et Java-eksempel:
// Følgende er en parameterværdi med SQL-injektion String username = "joe"; slet fra brugeren, hvor brugernavnet som '%'; Forbindelse con = ...; // Opret forbindelse til databasen // Når denne erklæring udføres, slettes alle brugere fra databasen. con.createStatement (). udføre ("opdater brugersæt logget_in = 1 hvor brugernavn = '" + brugernavn + "'");
3. OS-kommandoinjektion
OS Command Injection opstår, når brugerspecificeret input direkte overleveres til operativsystemet til exektion af applikationen uden korrekt kontrol. En sådan operation kan muligvis bruges af et program til at bruge en eksisterende kommando på OS. Når applikationen videregiver brugerinput uden korrekt validering, baner det vejen for en angriber at bruge smarte konstruktioner til at udføre ondsindede kommandoer. Disse kommandoer kan for eksempel være til at slette filer, stjæle data, ændre tilladelser på filer og mere.
4. Heltalsoverløb eller Wraparound
Et helt tal Det grundlæggende i computerprogrammering 101 - variabler og datatyper Grundlæggende om computerprogrammering 101 - variabler og datatyper Efter at have introduceret og talt lidt om objektorienteret programmering før, og hvor dens navnebror kommer fra, troede jeg, det er på tide, at vi gennemgår de absolutte grundlæggende af programmering på en ikke-sprogspecifik måde. Denne ... Overflow-fejl opstår, når du forsøger at gemme en større værdi i en integreret type, end der passer. Når dette sker, afkortes den større værdi, og operationen ender med at gemme et uforudsigeligt resultat. For eksempel kan en 2-byte usigneret kort gemme en maksimal værdi på 65535. Forestil dig nu at tilføje to korte værdier såsom 65530 og 10 og gemme resultatet på en kort. Resultatet (65545) passer ikke kort, hvilket efterlader en uforudsigelig værdi i målet kort som et resultat af trunkering. Når du derefter bruger denne værdi i en anden operation (f.eks. Et matrixindeks), ender du med uforudsigelige resultater.
Et C-eksempel:
kort a = 65530, b = 10; kort c = a + b; // på min computer, c har den uventede værdi: 4
5. Forkert validering af et matrixindeks
En anden meget almindelig fejl, der opstår i software, er Forkert validering af et matrixindeks. Det opstår, når man får adgang til en matrix Hvordan Arrays og lister fungerer i Python Hvordan Arrays og lister fungerer i Python Arrays og lister er nogle af de mest nyttige datastrukturer i programmering - selvom få mennesker bruger dem til deres fulde potentiale. ved hjælp af et indeks, der ligger uden for matrixens grænser. Når du får adgang til et sted uden for programmets gyldige datagrænser, ender du med en hukommelsesadgangsfejl (også kendt som en segmenteringsovertrædelse). Når hukommelsesplaceringen ligger inden for databegrænsningen, men uden for matrixen, ser du på hukommelseskorruption, når du skriver til sådanne placeringer.
Denne type fejl er mere almindelig med C og C ++, men kan opstå med ethvert sprog, også dem med automatisk hukommelsesstyring som Java, JavaScript, Python osv. Den eneste måde sådanne fejl kan afhjælpes i software er af dig, programmerer, der udøver tilstrækkelig omhu under kodning.
6. Tildel ressourcer uden grænser
Hukommelsesallokering er meget almindelig i C og C ++, da al hukommelsesstyring på disse sprog er manuel. Tildeling af hukommelse uden korrekt validering af den tildelte størrelse kan forårsage, at tildelingen mislykkes. Når resultatet af denne tildeling ikke kontrolleres, men bruges direkte, har du en opskrift på katastrofe.
Denne type fejl er også mulig uden manuel hukommelsesadministration, f.eks. Java, JavaScript og Python, når du tildeler arrays. Så behørig pleje skal udøves, når du fordeler matriser på disse sprog.
En anden mulighed for, at denne fejl opstår, er at oprette andre ressourcer, f.eks. Filhåndtag eller tilslutningshåndtag uden korrekt kontrol. Ikke korrekt lukning af disse ressourcer, når du er færdig med at bruge dem, er den mest almindelige måde, hvorpå disse ressourcegrænser nås.
7. Udløbet Pointer Dereference
På sprog som C og C ++ kan hukommelsen frigøres, når du er færdig med det. Brug af en markør En introduktion til pointers for programmerere En introduktion til pointers for programmerere Uanset om du er klar over det eller ej, bruger langt de fleste programmer du har brugt pointers på en eller anden måde. Som programmerer skal du forstå, hvordan pointer fungerer. til denne hukommelsesblok, der allerede er frigivet, er en fejl. Denne type fejl har også været i nyhederne på grund af større strømafbrydelser, så du kan gøre det godt at bekræfte, at denne type fejl ikke forekommer i din kode.
8. Null pointer Dereference
En markør kan have en nullværdi, før den initialiseres korrekt (eller efter at hukommelsen er frigivet). Dereferencing af en sådan markør medfører en null-pointer-fejl (kaldet NullPointerException i Java). Det er meget almindeligt i C, C ++ såvel som Java, og bestemt også muligt på andre sprog. Du skal sørge for tilstrækkelig omhu i din kode for at undgå denne type fejl.
Billedkredit: J.T.Presta
9. Manglende initialisering
Lokale variabler er dem, der er erklæret inden for en funktion (eller en blok) og ophører med at eksistere ved afslutningen af funktionen. Disse variabler er tildelt på stakken og vil have tilfældigt affald, når de først deklareres. Som programmerer er det din pligt at tildele en passende værdi til disse variabler, så snart de er erklæret. Brug af dem før sådan initialisering resulterer i Manglende initialisering fejl og vil helt sikkert ende i et styrt (eller noget mere ødelæggende).
Et C-eksempel:
int pos; char buffer [] = "Hej verden"; // denne linje kan muligvis udskrive affald og / eller kan ødelægge programmet, da pos ikke er initialiseret. printf ("Værdi af karakter ved pos% d er:% c \ n", pos, buffer [pos]);
10. Ødelagt eller risikabelt kryptografisk algoritme
Kryptografiens verden Hvordan fungerer kryptering, og er det virkelig sikkert? Hvordan fungerer kryptering, og er det virkelig sikkert? er i konstant udvikling. Hvad der er acceptabelt i dag, er muligvis ikke længere acceptabelt i morgen. Dette kan skyldes den stigende magt på computere, hvor computeropgaver, der anses for at tage år i dag, kan tage minutter i morgen. Eller nogen finder en ny måde at knække en bestemt algoritme på, som gør denne algoritme ubrugelig. Så du skal konstant holde øje med udviklingen inden for kryptografi og opdatere din kode (hvis den stadig er i brug), hvis der opdages sårbarheder og hacks i de algoritmer, du bruger.
For eksempel anbefales SHA-1, som er en hashingsalgoritme, ikke længere til beregning af hash. I 2005 blev der opdaget angreb mod denne algoritme, og SHA-2 eller SHA-3 anbefales. Så hvis din kode bruger SHA-1 på ethvert tidspunkt, bliver du nødt til at erstatte den med den anbefalede kode, hvis softwaren stadig bruges. Ellers risikerer du, at din applikation er åben for angreb.
Resumé
Vi har dækket et par af de mest almindelige programmerings- og kodningsfejl i denne artikel. Du kan ofte henvise til denne liste for at sikre dig, at du undgår dem.
Er du stødt på disse eller andre fejl, der kan føre til en storskala hack af dit websted eller din applikation? Fortæl os det i kommentarerne herunder.
Billedkredit: ajfile / Depositphotos