Sunt foarte mult de părere că o programare corectă va proteja împotriva acestor riscuri. Lucruri precum evitarea funcțiilor depreciate, care (cel puțin în bibliotecile Microsoft C ++) sunt în general depreciate din cauza vulnerabilităților de securitate și validând tot ceea ce traversează o limită externă.
Funcțiile care sunt solicitate numai din codul dvs. nu ar trebui să necesite validarea excesivă a parametrilor, deoarece controlați apelantul, adică nu există o limită externă. Funcțiile numite de codul altor persoane ar trebui să presupună că parametrii de intrare vor fi invalizi și / sau rău-intenționați la un moment dat.
Abordarea mea față de rezolvarea unor funcții expuse este pur și simplu să se stingă, cu un mesaj util, dacă este posibil. Dacă apelantul nu poate obține parametrii corect, atunci problema este în codul lor și ar trebui să o repare, nu tu. (Evident, ați furnizat documentația pentru funcția dvs., deoarece este expusă.)
Injecția de cod este o problemă numai dacă aplicația dvs. poate ridica utilizatorul curent. Dacă un proces poate injecta codul în aplicația dvs., atunci ar putea să scrie cu ușurință codul în memorie și să îl execute oricum. Fără a putea obține acces complet la injectarea codului de sistem atacurile sunt inutile. (De aceea, aplicațiile utilizate de administratori nu ar trebui să poată fi scrise de utilizatori mai mici.)