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

Hur man tar bort eller minimerar webbdelar i SharePoint 2013 - dummies

Hur man tar bort eller minimerar webbdelar i SharePoint 2013 - dummies

Du har två alternativ för att ta bort en webbdel från din SharePoint-sida - stängning eller radering. Att stänga en webbdel lämnar webbdelen på sidan så att du kan aktivera den igen för framtida användning. Att ta bort webbdelen tar bort webbdelen från din sida (men tar inte bort den från SharePoint). Till ...

För att ladda ner Apps från SharePoint Store - dummies

För att ladda ner Apps från SharePoint Store - dummies

Förutom de appar som följer med SharePoint, Du kan också lägga till appar från tredje part. Dessa tredjepartsprogram visas i SharePoint-butiken. Om du använder SharePoint Online har du tillgång till hela butiken. Om du använder SharePoint On-Premise kan dina lokala IT-administratörer ha låst ned de appar som ...

Hur man visar visningar via webbdelar i SharePoint 2013 - dummies

Hur man visar visningar via webbdelar i SharePoint 2013 - dummies

Du vill visa din SharePoint appdata med annan text och webbdelar på flera platser, till exempel hemsidor för hemsida, webbsidor eller publiceringssidor. I dessa situationer vill du inte att dina användare ska interagera med själva appen med alla redigeringsalternativ. Du vill bara att de ska se flera ...

Redaktörens val

Vad är Kik? - dummies

Vad är Kik? - dummies

Grundades 2009, är Kik en gratis snabbmeddelandeprogram utvecklad från Kik Interactive. Kik är tillgängligt på Android, Windows Phone och iOS-enheter. Applikationen är modellerad efter BlackBerry Messenger. Kik använder den befintliga smarttelefonens dataplan eller Wi-Fi för att skicka och ta emot meddelanden, videoklipp, foton, mobila webbsidor, skisser och annat innehåll. ...

ÖVersätt Twitter Slang och Jargon - dummies

ÖVersätt Twitter Slang och Jargon - dummies

Diskussioner om och om Twitter är fulla med alla slags förkortningar och jargong som kan förvirra nya Twitter-användare. Vad talar folk om (och tweeting) om? Följande ordlista definierar några av de förvirrande förkortningarna och Twitter-lingo du kan komma över. AFAIK: Så vitt jag vet. bot: Ett konto som drivs av en ...

Vad är Letgo? - dummies

Vad är Letgo? - dummies

Letgo är en mobil klassificerad applikation som tillåter användare att köpa från och sälja till andra lokalt. Du kan använda Letgo till fyndbutik eller slutligen släppa på saker som samlar damm runt ditt hus. I likhet med andra classifieds-applikationer som Wallapop eller Craigslist kommer säljare att skicka ett objekt och vänta på en köpare ...

Redaktörens val

Vanliga kodningsfel - dummies

Vanliga kodningsfel - dummies

Koden fungerar inte? Här är några vanliga misstag som kan gå upp till och med även den mest erfarna kodaren. Om din kod inte kommer att köras, försök att springa ned den här checklistan för att se om du har några av dessa fel: Har inte en slutlig HTML-tagg efter varje öppnande HTML-tagg . Saknade parentes i ...

Grundläggande kodningsordförråd - dummies

Grundläggande kodningsordförråd - dummies

Kodning har ett omfattande vokabulär som för lekmän kan verka som ogenomtränglig technobabble. Oavsett om du läser kodningsrelaterad artikel online eller pratar med en utvecklare på jobbet hörs det kanske ord som du inte har hört förut eller som har en annan mening i en kodande kontext. Här är några vanliga ordförrådsord att veta: Allmänt ...