Hjem Personlig finansiering C ++ Programmering: 10 Anti-Hacker Tips - dummies

C ++ Programmering: 10 Anti-Hacker Tips - dummies

Indholdsfortegnelse:

Video: Python For Ethical Hacking - #1 - Introduction & Python Modules 2024

Video: Python For Ethical Hacking - #1 - Introduction & Python Modules 2024
Anonim

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.

C ++ Programmering: 10 Anti-Hacker Tips - dummies

Valg af editor

Routingprotokollvalgskriterier - dummies

Routingprotokollvalgskriterier - dummies

Folk bruger to grundlæggende metoder til klassificering af ruteprotokoller - hvor de bruges og af hvordan de beregner routing. Du kan se, hvordan du vælger protokoller baseret på, hvor du planlægger at bruge dem, måden protokollen håndterer data på, og hvordan din router vælger hvilken protokol der skal bruges, når mere end en ...

Indstilling af Cisco Device Timeouts - dummies

Indstilling af Cisco Device Timeouts - dummies

Uden at indstille timeout-indstillinger for Cisco Device Privileged EXEC-tilstand, dine sessioner forbliver åbne på ubestemt tid. Dette er især farligt for konsolporten. Uden timeout parametre aktiveret, hvis administratoren ikke logger ud, har en indtrenger adgang og ingen problemer får forhøjede tilladelser. For at undgå denne potentielt farlige situation behøver du kun skrive a ...

Router Ethernet-interfacekonfiguration - dummies

Router Ethernet-interfacekonfiguration - dummies

Du starter processen med at konfigurere router Ethernet-grænseflader ved at foretage en fysisk forbindelse til din router. Når du har etableret forbindelsen, kan du fortsætte med den grundlæggende konfiguration af Ethernet-, Fast Ethernet- eller Gigabit Ethernet-forbindelser. Tilslutning til din router For at starte din konfiguration skal du oprette forbindelse til din router og komme ind i ...

Valg af editor

Med fokus på nogle hurtige løsninger til fotofile - dummier

Med fokus på nogle hurtige løsninger til fotofile - dummier

På trods af alle kameraproducenters forsøg på at gør fotografering idiotsikker, vi laver alle stadig mindre end perfekte billeder. Nogle gange er vi problemet - vi er for tætte eller for langt væk, eller kan ikke finde ud af, hvordan du bruger kameraets tåbebeskyttelsesfunktioner. Nogle gange er problemet, at virkeligheden nøjagtigt nægter at overholde vores forventninger: Himlen er ...

Lær at kende dine Manga Studio Layer Typer - Dummies

Lær at kende dine Manga Studio Layer Typer - Dummies

Manga Studio giver et udvalg af lag typer til brug i dit arbejde. Når du lærer at forstå og forstå, hvordan lag fungerer, vil du spekulere på, hvordan du nogensinde har arbejdet uden dem. Her er en introduktion til, hvad Manga Studio har til opbevaring for dig i sin lag lineup: Raster Layer: Dette er det grundlæggende ...

Få dit mobilwebsted tildelt på sociale bogmærker - dummies

Få dit mobilwebsted tildelt på sociale bogmærker - dummies

Populariteten af ​​websider med antallet af stemmer, de får. Resultatet er, at disse websteder er gode ressourcer til folk, der ønsker at holde øje med, hvad der er populært online. De fleste tilbyder speciel software, der gør det nemt for alle at stemme på et websted. Få dit websted opført ...

Valg af editor

Automatisk opdatering af din journal i Outlook 2000 - dummies

Automatisk opdatering af din journal i Outlook 2000 - dummies

Stardat 2001: På Star Trek, Virksomheden gør trofast daglige poster i kaptajnens log. Kaptajnen registrerer oplysninger om de planeter, besætningen har udforsket, udlændinge, de har kæmpet, og de bizarre fænomener, de har observeret ud i det dybe rum, hvor ingen er gået før! Nu er det din tur. Bare ...

Slet og gendan kontakter i Outlook - dummies

Slet og gendan kontakter i Outlook - dummies

Med Outlook, du behøver ikke at rive sider ud af en papir adressebog for at slippe af med en persons oplysninger; bare slet kontakten. Slettede kontakter går til mappen Slette emner i Outlook, indtil næste gang du tømmer mappen Slette elementer, så du kan hente dem derfra, hvis du laver ...