Indholdsfortegnelse:
- Forsæt ikke antagelser om brugerindgang
- Håndtere fejl Gracefully
- Vedligehold en programlog
- Følg en god udviklingsproces
- Implementér god versionskontrol
- Godkend brugerne sikkert
- Administrer eksterne sessioner
- Forfalsk din kode
- Skriv din kode med et digitalt certifikat
- Brug sikker kryptering, hvor det er nødvendigt
Video: Python For Ethical Hacking - #1 - Introduction & Python Modules 2025
Som en C ++-programmerer skal du lære de ting, du skal gøre i din C ++-kode for at undgå at skrive programmer, der er sårbare over for hackere. Der beskrives også funktioner, som du kan aktivere, hvis dit operativsystem understøtter dem, f.eks. Address Space Layout Randomization (ASLR) og Data Execution Prevention (DEP).
Forsæt ikke antagelser om brugerindgang
Programmerens tunnelsyn er okay i den tidlige udviklingsfase. På et tidspunkt må programmereren (eller endnu bedre en anden programmør, der ikke havde noget at gøre med udviklingen af koden) nødt til at læne sig tilbage og glemme det umiddelbare problem. Hun skal spørge sig selv: "Hvordan reagerer dette program på ulovlig input? ”
Her er nogle af reglerne for kontrol af input:
-
Gør ingen antagelser om længden af input.
-
Accepter ikke mere input, end du har plads til i dine faste længdebuffere (eller brugte buffere med variabel størrelse).
-
Kontroller rækkevidden af hver numerisk værdi for at sikre, at det giver mening.
-
Kontroller og filtrer ud specialtegn, der kan bruges af en hacker til at indsprøjte kode.
-
Overfør ikke rå input til en anden tjeneste, f.eks. En databaseserver.
Og udfør alle de samme checks på de værdier, der returneres fra fjerntjenester. Hackeren er muligvis ikke på input side, han kan være på responssiden.
Håndtere fejl Gracefully
Dit program skal svare rimeligt på fejl, der opstår i programmet. For eksempel, hvis dit opkald til en biblioteksfunktion returnerer en nullptr, , skal programmet opdage dette og gøre noget rimeligt.
Rimeligt her skal forstås ret liberalt. Programmet behøver ikke at snuse rundt for at finde ud af, præcis hvorfor funktionen ikke returnerede en rimelig adresse. Det kunne være, at anmodningen var for meget for hukommelse på grund af urimelig indgang. Eller det kunne være, at konstruktøren opdagede en form for ulovlig indgang.
Det er ligegyldigt. Punktet er, at programmet skal genoprette sin tilstand, så godt det kan og oprette for den næste bit af input uden at krasje eller ødelægge eksisterende datastrukturer som f.eks. Bunken.
Vedligehold en programlog
Opret og vedligehold runtime-logfiler, der gør det muligt for nogen at rekonstruere, hvad der skete i tilfælde af en sikkerhedsfejl. (Faktisk er det lige så sandt i tilfælde af enhver form for fiasko.) For eksempel vil du sandsynligvis logge hver gang nogen logger ind eller ud af dit system.
Du vil helt sikkert gerne vide, hvem der var logget ind i dit system, da der opstod en sikkerhedshændelse - dette er den gruppe, der har størst risiko for tab af sikkerhed, og som er mest mistænkelige, når de søger synder.Derudover vil du logge på eventuelle systemfejl, der vil omfatte de fleste undtagelser.
Et ægte produktionsprogram indeholder et stort antal opkald, der ser noget ud som følgende:
log (DEBUG, "Bruger% s indtastet juridisk adgangskode", sUser);
Dette er blot et eksempel. Hvert program skal bruge en slags logfunktion. Hvorvidt det faktisk hedder log () er uvæsentligt.
Følg en god udviklingsproces
Hvert program skal følge en gennemtænkt, formel udviklingsproces. Denne proces skal mindst omfatte følgende trin:
-
Indsamle og dokumentere krav, herunder sikkerhedskrav.
-
Gennemgå design.
-
Overholde en kodningsstandard.
-
Undergå enhedstest.
-
Udfør formelle acceptprøvninger, der er baseret på de oprindelige krav.
Derudover bør peer reviews udføres på nøglepunkter for at kontrollere, at kravene, design, kode og testprocedurer er af høj kvalitet og opfylder virksomhedens standarder.
Implementér god versionskontrol
Versionskontrol er en mærkelig ting. Det er naturligt, at du ikke bekymrer dig om version 1. 1 Når du er under pistolen for at få version 1. 0 ud af døren og ind i de ventende brugeres udstrakte hænder. Versionskontrol er imidlertid et vigtigt emne, der skal behandles tidligt, fordi det skal indbygges i programmets oprindelige design og ikke boltes på senere.
Et næsten trivielt aspekt af versionskontrol ved at vide, hvilken version af programmet et bruger bruger. Når en bruger ringer op og siger, "Det gør det, når jeg klikker på det," hjælper deskre virkelig, hvilken version af programmet brugeren bruger. Han kunne beskrive et problem i sin version, der allerede er rettet i den aktuelle version.
Godkend brugerne sikkert
Brugerautentificering skal være retfærdig: Brugeren giver et kontonavn og et kodeord, og dit program ser kontonavnet op i en tabel og sammenligner adgangskoderne. Hvis adgangskoderne matcher, er brugeren autentificeret. Men når det kommer til antihacking, er ingenting så simpelt.
Først skal du aldrig gemme adgangskoderne selv i databasen. Dette kaldes gemme dem i det klare og betragtes som meget dårlig form. Det er alt for let for en hacker at få hænderne på adgangskoden filen. I stedet skal du gemme en sikker transformation af adgangskoden.
Administrer eksterne sessioner
Du kan foretage visse antagelser, når hele din applikation kører på en enkelt computer. For en ting, når brugeren har autentificeret sig selv, behøver du ikke at bekymre dig om, at han bliver forvandlet til en anden person. Applikationer, der kommunikerer med en fjernserver, kan ikke tage denne antagelse - en hacker, der lytter på linjen, kan vente, indtil brugeren autentificerer sig selv og derefter kaprer sessionen.
Hvad kan den sikkerhedsorienterede programmør gøre for at undgå denne situation? Du vil ikke gentagne gange bede brugeren om sit kodeord for at sikre, at forbindelsen ikke er blevet kapret. Den alternative løsning er at etablere og administrere en session. Du gør dette ved at have serveren sende fjernprogrammet en session cookie, når brugeren har godkendt sig selv.
Forfalsk din kode
Code obfuscation er en handling, der gør den eksekverbare så vanskelig for en hacker at forstå som muligt.
Logikken er enkel. Jo lettere det er for en hacker at forstå, hvordan din kode fungerer, jo lettere vil det være for hacker at finde ud af sårbarheder.
Det enkleste trin, du kan tage, er at sikre, at du kun nogensinde distribuerer en version af dit program, der ikke indeholder fejlsymboloplysninger. Når du først opretter projektfilen, skal du sørge for at vælge, at både Debug og Release version skal oprettes.
Aldrig nogensinde distribuere versioner af din ansøgning med symboloplysninger inkluderet.
Skriv din kode med et digitalt certifikat
Kodesigneringsværktøjer ved at generere en sikker hash af den eksekverbare kode og kombinere den med et certifikat udstedt af en gyldig certificeringsmyndighed. Processen fungerer som sådan: Virksomheden, der opretter programmet, skal først registrere sig hos en af certificeringsmyndighederne.
Når certifikatmyndigheden er overbevist om, at Mit firma er en gyldig softwareenhed, udsteder den et certifikat. Dette er et langt nummer, som alle kan bruge til at verificere, at indehaveren af dette certifikat er den berømte My Company of San Antonio.
Brug sikker kryptering, hvor det er nødvendigt
Som enhver god advarsel har denne formaning flere dele. Først, "Brug kryptering, hvor det er nødvendigt. "Dette har tendens til at tænke på tanker om at kommunikere bankkontooplysninger via internettet, men du bør tænke mere generelt end det.
Data, der formidles, uanset om det er over internettet eller over et mindre område, er generelt kendt som Data in Motion. Data in Motion skal krypteres, medmindre det ikke er til nytte for en hacker.
Data lagret på disken er kendt som Data ved hvile. Disse data skal også krypteres, hvis der er en chance for, at disken bliver tabt, stjålet eller kopieret. Virksomheder rutinemæssigt krypterer harddiske på deres bærbare pc'er, hvis en bærbar computer bliver stjålet ved sikkerhedsscanneren i lufthavnen eller efterladt i en taxa et eller andet sted.
Små bærbare lagringsenheder som tommelfingerdrev er særligt modtagelige for at gå tabt - data på disse enheder skal krypteres.