Acasă Finanțe personale C ++ Programare: 10 sfaturi anti-hacker - manechine

C ++ Programare: 10 sfaturi anti-hacker - manechine

Cuprins:

Video: Week 0, continued 2024

Video: Week 0, continued 2024
Anonim

Ca programator C ++, trebuie să înveți lucrurile pe care ar trebui să le faceți în codul C ++ pentru a evita scrierea programelor vulnerabile la hackeri. Există, de asemenea, descrie caracteristici pe care le puteți activa dacă sistemul de operare le acceptă, cum ar fi Spațiul de adresă Randomization Layout (ASLR) și Data Execution Prevention (DEP).

Nu face ipoteze despre intrarea utilizatorului

Viziunea tunelului programatorului este în regulă în faza de dezvoltare timpurie. La un moment dat însă, programatorul (sau, mai bine, un alt programator care nu are nimic de-a face cu dezvoltarea codului) trebuie să stea în urmă și să uite de problema imediată. Ea trebuie să se întrebe: "Cum va reacționa acest program la intrarea ilegală? „

Iată câteva dintre regulile pentru verificarea intrărilor:

  • Nu face nici o ipoteză cu privire la lungimea intrării.

  • Nu acceptați mai multă intrare decât aveți la dispoziție în tampoanele cu lungime fixă ​​(sau bufferele cu dimensiune variabilă).

  • Verificați intervalul fiecărei valori numerice pentru a vă asigura că are sens.

  • Verificați și filtrați caracterele speciale care pot fi folosite de un hacker pentru a injecta codul.

  • Nu treceți intrarea brut pe alt serviciu, cum ar fi un server de baze de date.

Și efectuați toate aceleași verificări asupra valorilor returnate de la serviciile de la distanță. Hacker-ul nu poate fi pe partea de intrare, el poate fi pe partea de răspuns.

Eroare de manevră Gracefully

Programul dvs. ar trebui să răspundă în mod rezonabil la defecțiunile care apar în cadrul programului. De exemplu, dacă apelul la o funcție de bibliotecă returnează un nullptr, programul ar trebui să detecteze acest lucru și să facă ceva rezonabil.

Rezonabil trebuie înțeleasă destul de liber. Programul nu are nevoie să înșele în jurul valorii de a afla exact de ce funcția nu a returnat o adresă rezonabilă. S-ar putea ca cererea să fie pentru prea multă memorie din cauza intrărilor nerezonabile. Sau ar putea fi faptul că constructorul a detectat un tip de intrare ilegală.

Nu contează. Ideea este că programul ar trebui să-și restabilească starea de lucru cât mai bine și să se instaleze pentru următorul bit de intrare, fără să se prăbușească sau să corupe structurile de date existente cum ar fi heapul.

Mențineți un jurnal de programe

Creați și mențineți jurnalele runtime care permit cuiva să reconstruiască ceea ce sa întâmplat în cazul unei erori de securitate. (De fapt, acest lucru este la fel de adevărat în cazul oricărui tip de eșec.) De exemplu, probabil că doriți să vă înregistrați de fiecare dată când cineva semnează sau nu din sistem.

Veți dori cu siguranță să știți cine a fost conectat la sistemul dvs. atunci când a apărut un eveniment de securitate - acesta este grupul care este cel mai expus riscului unei pierderi de securitate și care este cel mai suspect atunci când caută vinovați.În plus, veți dori să înregistrați orice eroare de sistem care ar include cele mai multe excepții.

Un program de producție în lumea reală conține un număr mare de apeluri care arată cam așa:

log (DEBUG, "User% s a introdus parola legală", sUser);

Acesta este doar un exemplu. Fiecare program va avea nevoie de un anumit tip de funcție a jurnalului. Indiferent dacă este sau nu numit log (), este imaterial.

Urmăriți un proces de dezvoltare

Fiecare program trebuie să urmeze un proces bine gândit, de dezvoltare formală. Acest proces ar trebui să includă cel puțin următoarele etape:

  • Cerințe privind colectarea și documentarea, inclusiv cerințele de securitate.

  • Designul revizuirii.

  • Respectați un standard de codificare.

  • Examinați unitatea de testare.

  • Efectuați teste formale de acceptare care se bazează pe cerințele inițiale.

În plus, evaluările inter pares ar trebui efectuate la puncte cheie pentru a verifica dacă cerințele, procedeele de proiectare, cod și proceduri de încercare sunt de înaltă calitate și respectă standardele companiei.

Implementarea unui control bun al versiunii

Controlul versiunii este un lucru ciudat. Este firesc să nu vă faceți griji cu privire la versiunea 1. 1 când sunteți sub arma pentru a obține versiunea 1. 0 din ușă și în mâinile întinse ale utilizatorilor așteptați. Cu toate acestea, controlul versiunii este un subiect important care trebuie abordat mai devreme, deoarece trebuie să fie integrat în proiectul inițial al programului și să nu fie cuplat mai târziu.

Un aspect aproape trivial al controlului versiunii este cunoașterea versiunii programului pe care un utilizator o folosește. Când un utilizator cheamă și spune: "Face acest lucru când fac clic pe el", biroul de ajutor trebuie să știe cu adevărat ce versiune a programului utilizează utilizatorul. Ar putea descrie o problemă în versiunea sa, care a fost deja rezolvată în versiunea curentă.

Autentificați utilizatorii în siguranță

Autentificarea utilizatorilor trebuie să fie simplă: utilizatorul oferă un nume de cont și o parolă, iar programul vă arată numele contului într-un tabel și compară parolele. Dacă parolele se potrivesc, utilizatorul este autentificat. Dar când vine vorba de antihacking, nimic nu este atât de simplu.

În primul rând, nu păstrați niciodată parolele în baza de date. Aceasta se numește stocarea în clar și este considerată o formă foarte proastă. Este prea ușor pentru un hacker să-și pună mâna pe fișierul de parolă. În schimb, salvați o transformare sigură a parolei.

Gestionați sesiunile la distanță

Puteți face anumite presupuneri atunci când toată aplicația dvs. rulează pe un singur computer. Într-adevăr, odată ce utilizatorul sa autentificat, nu trebuie să vă faceți griji cu privire la transformarea acestuia într-o persoană diferită. Aplicațiile care comunică cu un server de la distanță nu pot face această ipoteză - un hacker care ascultă pe linie poate aștepta până când utilizatorul se autentifică și apoi va deturna sesiunea.

Ce poate face programatorul care are nevoie de securitate pentru a evita această situație? Nu doriți să întrebați în mod repetat utilizatorul pentru parola sa doar pentru a vă asigura că conexiunea nu a fost deturnată. Soluția alternativă este stabilirea și gestionarea unei sesiuni . Faceți acest lucru prin faptul că serverul trimite aplicației de la distanță un cookie de sesiune odată ce utilizatorul sa autentificat cu succes.

Obfuscate codul dvs.

Codul de obfuscation este actul de a face executabilul ca fiind dificil pentru un hacker să înțeleagă cât mai mult posibil.

Logica este simplă. Cu cât este mai ușor pentru un hacker să înțeleagă cum funcționează codul dvs., cu atât mai ușor va fi pentru hacker să găsească vulnerabilități.

Cel mai simplu pas pe care îl puteți face este să vă asigurați că distribuiți vreodată o versiune de lansare a programului dvs. care nu include informații despre simbolul de depanare. Când creați pentru prima dată fișierul proiectului, asigurați-vă că selectați că trebuie creată atât o versiune Debug, cât și o versiune Release.

Nu distribuiți niciodată versiuni ale aplicației dvs. cu informațiile despre simboluri incluse.

Înregistrați-vă codul cu un certificat digital

Semnarea codului funcționează generând un hash securizat al codului executabil și combinându-l cu un certificat emis de o autoritate validă de certificare. Procesul funcționează astfel: Compania care creează programul trebuie să se înregistreze mai întâi la una dintre autoritățile de certificare.

Odată ce autoritatea de certificare este convinsă că Compania mea este o entitate software validă, emite un certificat. Acesta este un număr lung pe care oricine îl poate utiliza pentru a verifica dacă titularul acestui certificat este faimosul Compania mea din San Antonio.

Utilizează criptarea securizată ori de câte ori este necesar

Ca orice avertisment bun, această avertizare are mai multe părți. Mai întâi, "Utilizați criptarea ori de câte ori este necesar. "Acest lucru tinde să-ți aducă aminte gândurile de a comunica informații despre contul bancar prin Internet, dar ar trebui să te gândești mai general decât asta.

Datele care sunt comunicate, fie pe Internet, fie pe un anumit interval mai mic, sunt cunoscute în general ca Date in Motion. Datele în mișcare ar trebui să fie criptate dacă nu ar fi de folos unui hacker.

Datele stocate pe disc sunt cunoscute sub numele de Date at Rest. Aceste date ar trebui, de asemenea, să fie criptate dacă există posibilitatea ca discul să fie pierdut, furat sau copiat. Întreprinderile criptează în mod obișnuit discurile hard pe laptopurile companiei în cazul în care un laptop este furat la scanerul de securitate din aeroport sau lasă într-un taxi undeva.

Dispozitivele de stocare portabile mici, cum ar fi unitățile degetului mare, sunt susceptibile de a fi pierdute - datele despre aceste dispozitive ar trebui să fie criptate.

C ++ Programare: 10 sfaturi anti-hacker - manechine

Alegerea editorilor

Social Media Design: Twitter Opțiuni imagine - dummy

Social Media Design: Twitter Opțiuni imagine - dummy

Jonglați constrângerile legate de spațiu și modul cel mai bun de a poziționa cele trei imagini separate pe care vi se permite să le utilizați în profilul dvs. Twitter.

Social Media Design: Inspirând exemplele de afaceri pe Facebook - manechine

Social Media Design: Inspirând exemplele de afaceri pe Facebook - manechine

ÎNainte de scufundări în elementele de bază ale proiectării o pagină solidă Facebook, aruncați o privire asupra unor branduri care profită din plin de Facebook cu pagini proprii. Persoanele fizice și organizațiile de la bloggeri la proprietarii de magazine Etsy de la domiciliu la branduri internaționale folosesc Facebook pentru a se conecta cu clienții și fanii existenți, precum și cu potențialul lor ...

Social Media Optimization: Publicarea Tweets automat la profilul dvs. Facebook - dummies

Social Media Optimization: Publicarea Tweets automat la profilul dvs. Facebook - dummies

Lucrurile noi pe care să le postați pe Facebook pot fi o adevărată corvoadă. Din fericire, există un truc pe care îl puteți optimiza pe acest site media social. Dacă puteți atinge postarea încrucișată a conținutului între servicii, vă puteți salva ceva timp. Twitter vă oferă posibilitatea de a vă conecta profilul cu alte servicii. Există, ...

Alegerea editorilor

Cum se verifică performanța sistemului cu AWS - dummies

Cum se verifică performanța sistemului cu AWS - dummies

AWS (Amazon Web Services) metode pentru monitorizarea serviciilor specifice AWS. Cu toate acestea, este posibil să aveți probleme de performanță a sistemului sau probleme de aplicare non-AWS care trebuie abordate, ceea ce înseamnă că aveți instrumente care pot funcționa în afara AWS. Pachetul de grupuri de instrumente de performanță conține un număr de instrumente specifice pentru realizarea acestei sarcini ...

Cum să alegeți serviciile AWS de care aveți nevoie - dummies

Cum să alegeți serviciile AWS de care aveți nevoie - dummies

Amintiți-vă că aveți doar 12 luni de libertate proces în care să se ia decizii privind serviciile AWS (Servicii Amazon Web) pe care să le utilizați în afacerea dvs. Douăsprezece luni pot părea mult timp, dar veți descoperi că se evaporă înaintea ochilor dvs. în timp ce încercați să vă jonglați responsabilitățile zilnice, întâlnirile ...

Probleme de securitate aWS - dummy

Probleme de securitate aWS - dummy

Pentru a utiliza AWS (Amazon Web Services) cale. Administratorii și profesioniștii în domeniul securității se pot răzbuna rapid, încercând să păstreze aceste computere interconectate în siguranță, dar aceasta face parte din descrierea postului. Trebuie să urmați cele mai bune practici în securizarea sistemelor informatice, a datelor pe care le conțin, ...

Alegerea editorilor

Cum se asamblează o Circuit de organe color - dummies

Cum se asamblează o Circuit de organe color - dummies

După ce ați strâns toate materialele de care aveți nevoie construiți un organ de culoare, sunteți gata să asamblați proiectul. Vedeți ce aveți nevoie pentru a construi un circuit de organe color. Veți avea nevoie de următoarele instrumente: Sârma de lipit, de preferință cu setări de 20 și 40 W Solder Utilizați lipire mai groasă pentru firele de tensiune și subțire ...

Construirea unui Circuit Dead-Bug Style - dummies

Construirea unui Circuit Dead-Bug Style - dummies

) Sunt montate cu capul în jos pe placa de circuit imprimat (PC), majoritatea picioarelor lipindu-se în aer! Arata ca multe. . . morți bug-uri! Un alt nume pentru acest tip de construcție este "circuitele de aer", deoarece componentele sunt atașate direct la ...

Aplicarea RFID în lumea reală - dummies

Aplicarea RFID în lumea reală - dummies

Capacitatea de a urmări și de a urmări, de a urmări și de a găsi, peek sunt toate îmbunătățite prin utilizarea RFID. Unii avocați de confidențialitate vă faceți griji că aparatele vor atașa în mod magic etichetele RFID la îmbrăcăminte sau pantofi pe măsură ce vă plimbați prin magazin sau în jurul unui birou, dar acest lucru este foarte puțin probabil. Limitele ...