Hem Personliga finanser C ++ Programmering: 10 Anti-Hacker Tips - dummies

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

Innehållsförteckning:

Video: How To Code a Hack For ANY Game! C# - Game Hacking #1 2024

Video: How To Code a Hack For ANY Game! C# - Game Hacking #1 2024
Anonim

Som C ++-programmerare måste du lära dig de saker du borde göra i din C ++-kod för att undvika att skriva program som är sårbara för hackare. Det finns också beskrivna funktioner som du kan aktivera om ditt operativsystem stöder dem, till exempel ASLR (Address Space Layout Randomization) och Data Execution Prevention (DEP).

Antag inte antaganden om användarinmatning

Programmerarens tunnelvision är okej under den tidiga utvecklingsfasen. Vid något tillfälle måste programmeraren (eller ännu bättre, någon annan programmerare som inte hade något att göra med kodens utveckling) behöva luta sig tillbaka och glömma det omedelbara problemet. Hon behöver fråga sig, "Hur kommer det här programmet att reagera på olaglig inmatning? ”

Här följer några regler för kontroll av inmatning:

  • Gör inga antaganden om längden på ingången.

  • Ta inte emot mer inmatning än du har plats för i buffertarna med fast längd (eller använd buffert med variabel storlek).

  • Kontrollera intervallet för varje numeriskt värde för att se till att det är vettigt.

  • Kontrollera och filtrera bort specialtecken som kan användas av en hackare för att injicera kod.

  • Överför inte råinmatning till en annan tjänst, till exempel en databasserver.

Och utföra alla samma kontroller på värdena som returneras från fjärrtjänster. Hackaren kan inte vara på ingångssidan, han kan vara på svarsidan.

Hantera misslyckanden Graciöst

Ditt program ska svara rimligt på fel som uppstår inom programmet. Om till exempel om ditt samtal till en biblioteksfunktion returnerar en nullptr, bör programmet upptäcka detta och göra någonting rimligt.

Rimlig här ska förstås ganska liberalt. Programmet behöver inte sniffa för att räkna ut exakt varför funktionen inte returnerade en rimlig adress. Det kan vara att begäran var för långt för mycket minne på grund av orimlig inmatning. Eller det kan vara så att konstruktören upptäckte någon typ av olaglig inmatning.

Det spelar ingen roll. Poängen är att programmet ska återställa sitt tillstånd så gott det kan och ställa in för nästa bit av ingång utan att krascha eller korrumpera befintliga datastrukturer som höjden.

Håll en programlogg

Skapa och behåll runtime-loggar som gör att någon kan rekonstruera vad som hände i händelse av ett säkerhetsfel. (Det är faktiskt lika sant i händelse av någon typ av fel.) Du vill förmodligen logga varje gång någon loggar in eller ut ur ditt system.

Du vill definitivt veta vem som var inloggad i ditt system när en säkerhetshändelse inträffade - det här är den grupp som mest riskerar en säkerhetsförlust och som är mest misstänksam när man letar efter synder.Dessutom vill du logga in några systemfel som skulle inkludera de flesta undantagen.

Ett verkligt produktionsprogram innehåller ett stort antal samtal som ser något ut som följande:

logg (DEBUG, "Användare% s inloggat juridiskt lösenord", sUser);

Detta är bara ett exempel. Varje program behöver någon typ av loggfunktion. Huruvida det faktiskt kallas logg () är oumbärligt.

Följ en bra utvecklingsprocess

Varje program ska följa en väl genomtänkt, formell utvecklingsprocess. Denna process bör innehålla åtminstone följande steg:

  • Samla in och dokumentera krav, inklusive säkerhetskrav.

  • Granska designen.

  • Anslut till en kodningsstandard.

  • Utför enhetstest.

  • Utför formella godkännande tester som bygger på de ursprungliga kraven.

Dessutom bör granskningar genomföras på nyckelpunkter för att verifiera att kraven, design, kod och testprocedurer är av hög kvalitet och uppfyller företagsstandarder.

Implementera god versionskontroll

Versionskontroll är en konstig sak. Det är naturligt att inte oroa sig för version 1. 1 när du är under pistolen för att få version 1. 0 ut genom dörren och in i väntanvändarnas utsträckta händer. Versionskontroll är emellertid ett viktigt ämne som måste tas upp tidigt eftersom det måste byggas in i programmets ursprungliga design och inte bultas på senare.

En nästan triviell aspekt av versionskontrollen är att veta vilken version av programmet ett användarnamn använder. När en användare ringer upp och säger "Det gör det här när jag klickar på det", behöver helpdesken verkligen veta vilken version av programmet användaren använder. Han kan beskriva ett problem i sin version som redan har fastställts i den nuvarande versionen.

Godkänn användarna säkert

Användarautentisering bör vara enkel: Användaren anger ett kontonamn och ett lösenord, och ditt program ser kontonamnet upp i ett bord och jämför lösenordet. Om lösenorden matchar, är användaren autentiserad. Men när det gäller antihacking är ingenting så enkelt.

Först lagra aldrig lösenorden själva i databasen. Detta kallas att lagra dem i det klara och anses vara mycket dålig form. Det är alltför lätt för en hacker att få händerna på lösenordsfilen. I stället sparar du en säker omvandling av lösenordet.

Hantera avlägsna sessioner

Du kan göra vissa antaganden när all din applikation körs på en enda dator. För en sak, när användaren har autentiserat sig, behöver du inte oroa dig för att han omvandlas till en annan person. Program som kommunicerar med en fjärrserver kan inte göra detta antagande - en hacker som lyssnar på linjen kan vänta tills användaren autentiserar sig och sedan kapar sessionen.

Vad kan den säkerhetsinriktade programmeraren göra för att undvika denna situation? Du vill inte upprepade gånger fråga användaren för sitt lösenord för att se till att anslutningen inte har kapats. Den alternativa lösningen är att skapa och hantera en session. Du gör detta genom att servern skickar fjärrprogrammet till en sessionskaka när användaren har godkänt sig själv.

Förklara din kod

Kodfuskning är att göra körbar så svår för att hackaren ska kunna förstå det som möjligt.

Logiken är enkel. Ju lättare det är för en hackare att förstå hur din kod fungerar desto lättare blir det för hackern att ta reda på sårbarheter.

Det enklaste enklaste steget du kan ta är att se till att du bara distribuerar en version av ditt program som inte innehåller felsymbolinformation. När du först skapar projektfilen, var noga med att välja att både en Debug och en Release-version ska skapas.

Aldrig någonsin distribuera versioner av din ansökan med symbolinformation som ingår.

Skriv din kod med ett digitalt certifikat

Kodsigneringsarbete genom att generera en säker hash för den körbara koden och kombinera den med ett certifikat som utfärdats av en giltig certifikatmyndighet. Processen fungerar så här: Företaget som skapar programmet måste först registrera sig hos en av certifikatmyndigheterna.

När certifikatmyndigheten är övertygad om att Mitt företag är en giltig programvaruhet, utfärdar den ett certifikat. Detta är ett långt nummer som alla kan använda för att verifiera att innehavaren av detta certifikat är det kända My Company of San Antonio.

Använd säker kryptering när det behövs.

Som en god varning har denna uppmaning flera delar. Först, "Använd kryptering om det behövs. "Detta brukar tänka på tankar om att kommunicera bankkontoinformation via Internet, men du borde tänka mer generellt än det.

Data som kommuniceras, oavsett om de är över Internet eller över ett mindre område, är generellt känt som Data in Motion. Data in Motion ska krypteras om det inte skulle vara till nytta för en hackare.

Data som är lagrad på skivan är känd som Data vid vila. Dessa data ska också krypteras om det finns risk för att disken går förlorad, stulen eller kopierad. Företagen krypterar rutinmässigt hårddiskarna på sina bärbara datorer om en bärbar dator blir stulen vid säkerhetsskannern på flygplatsen eller lämnat i en taxi någonstans.

Små bärbara lagringsenheter som tumminer är särskilt mottagliga för att gå vilse - data på dessa enheter ska krypteras.

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

Redaktörens val

Hitta hur du betalar webbplatser i online dating - dummies

Hitta hur du betalar webbplatser i online dating - dummies

Du får vad du betalar för I livet ingår Internet-dating webbplatser. Till skillnad från gratis webbplatser, med lönesidor har du inte huvudvärk på oändliga reklammeddelanden som skriker i ditt ansikte. Dessutom är omfattningen av täckning och tillgängliga funktioner bred och robust. Solid tillsyn tillhandahålls (för att gräva ut wackos) och lämpliga hinder ...

Dating för Dummies Cheat Sheet - dummies

Dating för Dummies Cheat Sheet - dummies

Dating behöver inte vara nervös, men det kräver förberedelse . Du måste göra en uppriktig själsökning så att du är redo att vara ärlig, öppen och uppmärksam. Du behöver en stark känsla för dina dejtingförväntningar så att du tydligt kan kommunicera vad du letar efter utan att ställa in baren så hög att ingen ...

Få passar för dating igen efter 50 - dummies

Få passar för dating igen efter 50 - dummies

Copyright © 2014 AARP All rights reserved. Du behöver inte vara frisk och frisk efter 50, men det hjälper säkert om du är. Om du inte är något av dessa saker, behöver du inte ge upp och tycker att det är för sent att komma dit. Många börjar träningsregler så sent som ålder ...

Redaktörens val

ÄR ett au pair rätt för din familj? - dummies

ÄR ett au pair rätt för din familj? - dummies

Det är viktigt att undersöka dina specifika familjeförhållanden för att avgöra om ett au pair är rätt barnomsorg för din familj. Du kanske bestämmer dig för att anställa ett au pair i stället för daghem, barnbarn eller barnpassare om du vill utsätta din familj för en ny kultur. Är ...

Online-verktyg för familjebudgetar - dummies

Online-verktyg för familjebudgetar - dummies

Vissa familjer kan tycka att den mest användbara aspekten av att bo i en värld med nästan oändliga onlineverktyg innebär att kunna budgetera för familjen med dessa verktyg. Följande tre onlinetjänster erbjuder familjer ett sätt att organisera familjeutgifter online, dela åtkomst till säkra konton och eliminera några av papperet ...

Barn som Online Entreprenörer - Dummies

Barn som Online Entreprenörer - Dummies

Levande i en digital värld tillåter barnen obegränsade möjligheter när det gäller entreprenörskap. Denna digitala tidsålder ger barnen en unik färdighetssats med möjlighet att dela den färdigheten med andra och lägga till "onlineföretagare" till listan över möjliga efterskolor och sommarjobb som finns tillgängliga för barn idag. Spelskapande Ett område där digitalt ...

Redaktörens val

Word 2007 Mail Merge - Steg 3: Byggnadsrekord - dummies

Word 2007 Mail Merge - Steg 3: Byggnadsrekord - dummies

Efter att ha definierat de fält du behöver för din Word 2007-postfusion, är nästa steg att slutföra adresslistan. För att göra det skapar du en lista över poster genom att ange data för varje fält i varje post. Detta händer i dialogrutan Ny adresslista. Kom ihåg att fält är kolumner och ...

Word 2007 Mail Merge - Steg 5: Final Merge - dummies

Word 2007 Mail Merge - Steg 5: Final Merge - dummies

Med sammanfogningsfälten infogad i huvudversionen av Word 2007-dokumentet och adresslistan stannar, är du redo att starta din mailfusion! Spara huvuddokumentet. Klicka på knappen Förhandsgranska resultat. Fälten i huvuddokumentet försvinner! De ersätts av information från den första posten i adresslistan. Så här ...