Extraknäck programmering
Återanvändning av befintlig kod, särskilt när den distribueras i stor utsträckning, kan möjliggöra skapandet av exploater som riktar sig till en bredare publik än annars och medför all säkerhet och sårbarheter i återanvändningskod. När man överväger användningen av befintlig källkod kommer en extraknäck programmering översikt över modulens underavsnitt som klasser eller funktioner att hjälpa till att eliminera eller göra utvecklaren medveten om eventuella sårbarheter och säkerställa dess användning i projektet.
Äldre problem är problem som är inneboende när äldre mönster förväntas fungera med dagens krav, särskilt när äldre mönster inte har utformats och testats med dessa krav i åtanke. Många programvaruprodukter har problem med gammal föråldrad källkod; Till exempel: äldre kod kanske inte har utvecklats i enlighet med Defensive programming initiative och kan därför vara av mycket lägre kvalitet än den nyutvecklade extraknäck programmering.
Den föråldrade koden kunde ha skrivits och testats under förhållanden som inte längre gäller. De gamla kvalitetssäkringstesterna kanske inte längre är giltiga. Exempel 2: föråldrad kod kan kompileras och testas på bitarkitekturer, men när den kompileras i bitarkitekturer kan nya aritmetiska problem uppstå. Exempel 3: Den trötta koden kunde ha varit avsedd för autonoma maskiner, men blir sårbar efter att ha lagt till en nätverksanslutning.
Äldre kod skrivs inte med nya problem i åtanke. Till exempel är källkoden som skrivs i fallet sannolikt utsatt för många kodinjektionssårbarheter eftersom de flesta sådana problem inte var allmänt förstådda vid den tiden. Anmärkningsvärda exempel på den äldre uppgiften: Bind 9, introducerad av Paul Vixey och David Conrad som "BindV9 - a complete rewrite", "säkerhet var en nyckelfaktor i designen",[2] säkerhet, tillförlitlighet, skalbarhet och nya protokoll som nyckeln till att ta hand om att skriva om gammal äldre kod.
Det var en annan tid i Oracle-säkerhetslandskapet som kämpade med äldre problem som gammal källkod skriven utan att lösa problem i SQL-injektion och utökning av privilegier, vilket ledde till många säkerhetsproblem som tog tid att fixa och genererade också ofullständiga korrigeringar. Detta har dragit hård kritik från säkerhetsexperter som David Lichfield, Alexander Kornbrust, Cesar Serrudo.
Kanonisering [redigera] skadliga användare förmodligen uppfinna nya typer av missuppfattningar om felaktiga uppgifter. Kanoniseringsbibliotek kan användas för att undvika fel på grund av icke-kanonisk inmatning. Låg tolerans mot "potentiella" buggar [redigera] antyder att kodkonstruktioner som verkar vara mottagliga för problemet är på samma sätt kända för att vara sårbara, etc .
Den grundläggande tumregeln: "Jag är inte medveten om alla typer av säkra exploater. Jag måste skydda mig mot de jag känner till, och då måste jag vara proaktiv! Andra sätt att tillhandahålla kod [redigera] ett av de vanligaste problemen är den okontrollerade användningen av konstruktioner med konstant storlek eller fördelad data för dynamisk storlek [Citat behövs], såsom ingångsdata till ett program.
Buffertspill problem. Detta är särskilt vanligt för strängdata i C [citat är nödvändigt]. C biblioteksfunktioner som GET bör aldrig användas eftersom den maximala storleken på ingångsbufferten inte skickas som ett argument. C-biblioteksfunktioner som SCANF kan användas säkert, men kräver att programmeraren tar hand om att välja strängar i ett säkert format genom att krypa igenom det innan du använder det.
Försök inte implementera ditt eget krypteringsschema, använd en beprövad istället. Detta kan uppnås på något av två sätt: [Citat behövs] en top-down-strategi: detta är en direkt följd av den rekursiva formuleringen av alla problem. Om lösningen på något problem kan formuleras rekursivt med lösningen för dess underrutiner, och om dess underrutiner överlappar varandra, är det lätt att komma ihåg eller lagra lösningarna för underprogrammen i en tabell.
När vi försöker lösa en ny rutin kontrollerar vi först tabellen för att se om den redan har lösts. Om lösningen har skrivits kan vi använda den direkt, annars löser vi underrutinen och lägger till lösningen i tabellen. Bottom-up-strategi: när vi formulerar en lösning på en rekursiv lösning, både när det gäller dess delproblem och extraknäck programmering beslut om stora delproblem.
Detta görs också vanligtvis i tabellform genom att iterativt generera lösningar för större och större rutiner med hjälp av lösningar för små rutiner. Om vi till exempel redan känner till värdena för F41 och F40 kan vi direkt beräkna värdet på f. vissa programmeringsspråk kan automatiskt komma ihåg resultatet av att ringa en funktion med en viss uppsättning argument för att påskynda samtal efter samtal för att utvärdera namnet.
Extraknäck programmering mekanism kallas ett samtal till ett samtal. Vissa språk gör det möjligt. Schema, Common Lisp, Perl eller D. Vissa språk har inbyggd automatisk memoisering, som klistrad Prolog och J, som stöder memoisering med M. memoisering förekommer också som ett lättillgängligt designmönster i termbaserade språk som Wolfram-språket. Bioinformatik [redigera] dynamisk programmering används ofta i bioinformatik för uppgifter som sekvensjustering, proteinfällning, RNA-struktur förutsägelse, och protein-DNA-bindning.