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

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

Innholdsfortegnelse:

Video: simple Keylogger Virus with Hidden Window and Log C++ Tutorial Visual Studio 2024

Video: simple Keylogger Virus with Hidden Window and Log C++ Tutorial Visual Studio 2024
Anonim

Som en C ++-programmerer må du lære de tingene du bør gjøre i C ++-koden din for å unngå å skrive programmer som er utsatt for hackere. Det beskrives også funksjoner som du kan aktivere hvis operativsystemet støtter dem, for eksempel adresseplasslayout-randomisering (ASLR) og databehandlingsforebygging (DEP).

Ikke ta forutsetninger om brukerinngang

Programmerens tunnelvisjon er ok i den tidlige utviklingsfasen. På et tidspunkt må programmereren (eller enda bedre en annen programmerer som ikke har noe med å utvikle koden) imidlertid lene seg tilbake og glemme det umiddelbare problemet. Hun må spørre seg selv: "Hvordan reagerer dette programmet på ulovlig innsats? “

Her er noen av reglene for kontroll av inngang:

  • Gjør ingen antagelser om lengden på inngangen.

  • Ikke godtar mer innspilling enn du har plass til i buffelene med fast lengde (eller brukt buffere med variabel størrelse).

  • Kontroller rekkevidden av hver tallverdi for å sikre at det er fornuftig.

  • Se etter og filtrer ut spesialtegn som kan brukes av en hacker for å injisere kode.

  • Ikke overfør råinngang til en annen tjeneste, for eksempel en databaseserver.

Og utfør alle de samme kontrollene på verdiene som returneres fra eksterne tjenester. Hackeren kan ikke være på inngangssiden, han kan være på responssiden.

Håndter misbruk Grasiøst

Ditt program skal svare rimelig til feil som oppstår i programmet. For eksempel, hvis samtalen til en biblioteksfunksjon returnerer en nullptr, , bør programmet oppdage dette og gjøre noe rimelig.

Rimelig her skal forstås ganske liberalt. Programmet trenger ikke å snuse rundt for å finne ut nøyaktig hvorfor funksjonen ikke returnerte en rimelig adresse. Det kan være at forespørselen var for mye for mye minne på grunn av urimelig inngang. Eller det kan være at konstruktøren oppdaget noen form for ulovlig inngang.

Det spiller ingen rolle. Poenget er at programmet skal gjenopprette sin tilstand så godt det kan og sette opp for neste bit av inngang uten å krasje eller ødelegge eksisterende datastrukturer som heien.

Opprettholde en programlogg

Opprett og vedlikehold loggbok som gjør at noen kan rekonstruere hva som skjedde i tilfelle en sikkerhetsfeil. (Egentlig, dette er like sant i tilfelle noen type feil.) For eksempel vil du sannsynligvis logge hver gang noen logger inn eller ut av systemet.

Du vil definitivt vite hvem som var logget inn i systemet ditt da det oppstod en sikkerhetshendelse - dette er gruppen som har størst risiko for tap av sikkerhet og som er mest mistenkelige når man søker etter skyldige.I tillegg vil du logge på eventuelle systemfeil som vil inkludere de fleste unntak.

Et produksjonsprogram i virkeligheten inneholder et stort antall samtaler som ser ut som følgende:

logg (DEBUG, "Bruker% s inntatt juridisk passord", sUser);

Dette er bare et eksempel. Hvert program trenger litt loggfunksjon. Hvorvidt det faktisk kalles logg () er uansett.

Følg en god utviklingsprosess

Hvert program bør følge en godt gjennomtenkt, formell utviklingsprosess. Denne prosessen skal inneholde minst følgende trinn:

  • Samle og dokument krav, inkludert sikkerhetskrav.

  • Gjennomgå design.

  • Overholde en kodingsstandard.

  • Undergå enhetstest.

  • Utfør formelle aksepttester som er basert på de opprinnelige kravene.

I tillegg bør peer-vurderinger gjennomføres på sentrale punkter for å verifisere at kravene, design, kode og testprosedyrer er høye kvalitet og oppfyller bedriftsstandarder.

Implementér god versjonskontroll

Versjonskontroll er en merkelig ting. Det er naturlig å ikke bekymre deg for versjon 1. 1 når du er under pistolen for å få versjon 1. 0 ut døren og inn i de venterne brukerens utstrakte hender. Versjonskontroll er imidlertid et viktig tema som må tas opp tidlig fordi det må bygges inn i programmets innledende design og ikke boltes på senere.

Et nesten trivielt aspekt av versjonskontroll er å vite hvilken versjon av programmet en bruker bruker. Når en bruker ringer opp og sier, "Det gjør dette når jeg klikker på det," trenger help desk virkelig å vite hvilken versjon av programmet brukeren bruker. Han kunne beskrive et problem i sin versjon som allerede er løst i den nåværende versjonen.

Godkjenne brukere sikkert

Brukerautentisering bør være enkel: Brukeren oppgir et kontonavn og et passord, og programmet ser kontonavnet opp i et bord og sammenligner passordene. Hvis passordene samsvarer, er brukeren autentisert. Men når det gjelder antihacking, er ingenting så enkelt.

Først må du aldri lagre passordene selv i databasen. Dette kalles lagring av dem i klare og regnes som veldig dårlig form. Det er altfor lett for en hacker å få hendene på passordfilen. I stedet lagre en sikker omforming av passordet.

Administrer eksterne økter

Du kan gjøre visse forutsetninger når hele søknaden din kjører på en enkelt datamaskin. For en ting, når brukeren har autentisert seg, trenger du ikke å bekymre deg for at han blir forvandlet til en annen person. Programmer som kommuniserer med en ekstern server kan ikke gjøre denne antagelsen - en hacker som lytter på linjen kan vente til brukeren autentiserer seg selv og deretter kaprer økten.

Hva kan den sikkerhetsinnstilte programmøren gjøre for å unngå denne situasjonen? Du vil ikke gjenta brukeren om gjentatte ganger for å forsikre deg om at forbindelsen ikke har blitt kapret. Den alternative løsningen er å etablere og administrere en økt. Du gjør dette ved å ha serveren sende fjernprogrammet en øktkake når brukeren har godkjent seg selv.

Forfalsk koden din

Code obfuscation er en handling som gjør at kjørbarheten er like vanskelig for en hacker å forstå som mulig.

Logikken er enkel. Jo lettere det er for en hacker å forstå hvordan koden din fungerer, desto lettere blir det for hackeren å finne ut av sårbarheter.

Enkelt enkleste trinnet du kan ta, er å sørge for at du bare distribuerer en versjon av programmet som ikke inneholder feilsøkingsinformasjon. Når du først oppretter prosjektfilen, må du sørge for at både Debug og Release versjon skal opprettes.

Aldri, noensinne, distribuere versjoner av søknaden din med symbolinformasjon inkludert.

Skriv koden din med et digitalt sertifikat

Kodesigneringsarbeid ved å generere en sikker hash for den kjørbare koden og kombinere den med et sertifikat utstedt av en gyldig sertifikatmyndighet. Prosessen virker slik: Selskapet som oppretter programmet må først registrere seg hos en av sertifikatmyndighetene.

Når sertifikatmyndigheten er overbevist om at Mitt firma er en gyldig programvare-enhet, utsteder det et sertifikat. Dette er et langt nummer som alle kan bruke til å verifisere at innehaveren av dette sertifikatet er det berømte Mitt firma i San Antonio.

Bruk sikker kryptering når det er nødvendig

Som enhver god advarsel, har denne formaningen flere deler. Først, "Bruk kryptering når det er nødvendig. "Dette har en tendens til å huske tanker om å kommunisere bankkontoinformasjon over Internett, men du bør tenke mer generelt enn det.

Data som blir kommunisert, enten over Internett eller over noe mindre område, er kjent generelt som Data in Motion. Data i bevegelse bør krypteres, med mindre det ikke er til nytte for en hacker.

Data lagret på disken er kjent som Data i hvilemodus. Disse dataene skal også krypteres hvis det er en sjanse for at disken blir tapt, stjålet eller kopiert. Bedrifter rutinemessig krypter harddiskene på deres bærbare datamaskiner hvis en bærbar PC blir stjålet på sikkerhetsskanneren på flyplassen eller forlatt i en taxi et sted.

Små bærbare lagringsenheter som tommelstasjoner er spesielt utsatt for å gå tapt - data på disse enhetene skal krypteres.

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

Redaktørens valg

Vanlige medikamenteffekter for legeassistenteksamen - dummies

Vanlige medikamenteffekter for legeassistenteksamen - dummies

Bli kjent med vanlige bivirkninger for legeassistenteksamen (PANCE). Den gjennomsnittlige personen over 60 år tar omtrent ni reseptbelagte medisiner og ser minst fire forskjellige helsepersonell. Potensialet for noen til å oppleve bivirkningene av disse medisinene er enorm, og det er potensialet for signifikante legemiddelinteraksjoner. ...

Epidemiologiske studier dekket av legeassistenteksamen - dummies

Epidemiologiske studier dekket av legeassistenteksamen - dummies

For legeassistenteksamen (PANCE) du bør være oppmerksom på forskjellene mellom typer epidemiologiske studier. Det første trinnet er å gjenkjenne om studiet er en retrospektiv studie eller en prospektiv studie: Retrospektiv: En retrospektiv studie betyr at du ser på fortiden for å finne ut hva som skjedde. For eksempel, en ...

Forhold som påvirker pleura dekket på legeassistenteksamen - dummies

Forhold som påvirker pleura dekket på legeassistenteksamen - dummies

Du kan se Spørsmål om legeassistenteksamen om forhold som påvirker pleura. Du må vurdere evaluering og behandling av pleural effusions, pneumothorax og pleurisy. Væske rundt lungene: Pleural effusjon Normalt er pleura et tomt rom; en pleural effusjon er ganske enkelt væske som opptar den plassen. Pleural ...

Redaktørens valg

Slik setter du automatiske varsler på LinkedIn - dummies

Slik setter du automatiske varsler på LinkedIn - dummies

Sikkert, du kan gjøre alt fotverket ved å gå til LinkedIn hjemmesiden og ser deg rundt for å se hvilke meldinger eller endringer som har skjedd. Den sanne kraften til å holde kontakten, har imidlertid LinkedIn, kontakter deg automatisk med den informasjonen du trenger for å holde deg informert. Klikk på Administrer-koblingen ved siden av Personvern og innstillinger ...

Tips for å administrere dine LinkedIn Post-interaksjoner - dummies

Tips for å administrere dine LinkedIn Post-interaksjoner - dummies

Når du klikker Publiser på LinkedIn, kan du tenke at jobb er ferdig, men det er bare begynt. Etter hvert som flere og flere leser innlegget ditt, kan de samhandle med innlegget og med deg som forfatter. Her er noen ting å huske på etter at du har publisert et innlegg: Overvåk statistikken. Når du ...

Forstå LinkedIn Pulse - dummies

Forstå LinkedIn Pulse - dummies

Har du sjekket ut LinkedIn Pulse ennå? Tenk deg om du leser en avis som bare viste deg artikler som har betydning for deg. (For det hele, for mange av dere, tenk på de dagene du kanskje har lest en avis.) Tilpassede nyheter er mulige, og på LinkedIn kalles det LinkedIn Pulse. Alt du trenger å gjøre for å ...

Redaktørens valg

Hva Dragon NaturallySpeaking kan gjøre for deg - dummies

Hva Dragon NaturallySpeaking kan gjøre for deg - dummies

Noe om å diktere til en datamaskin vekker alle slags urealistiske forventninger hos mennesker. Hvis du forventer at du skal servere deg frokost på sengen, har du lykke til. Denne artikkelen ble ikke skrevet ved å si "Computer, skriv en bok om NaturallySpeaking. "Forfatteren måtte diktere det ord for ord, akkurat som hun ville hatt ...

Når Start ikke starter i NaturallySpeaking - dummies

Når Start ikke starter i NaturallySpeaking - dummies

Når du gir kommandoen "Start" til Dragon NaturallySpeaking, du sier "Start America Online" eller "Start Microsoft Works" eller "Start Quicken", og programmet skal åpnes. Men hva hvis det ikke gjør det? Hva er greia? Start-kommandoen starter et program som er installert på maskinen din, og har enten et snarveisikon på ...

Når NaturallySpeaking Menykommandoer ikke fungerer - dummies

Når NaturallySpeaking Menykommandoer ikke fungerer - dummies

Når du gir en kommando til NaturallySpeaking, for eksempel "Klikk" og ingenting skjer, det sannsynlige problemet er at menyen Bruk menyer som er kompatible med skjermlesere, ikke er merket av. For å sjekke det: Velg Verktøy → Valg i vinduet NaturallySpeaking. Det er ikke noe poeng å fortelle deg hvordan du får tilgang til dette med stemmen, for det er akkurat ...