Bazele securității aplicațiilor web
Dezvoltarea web modernă are multe provocări, iar securitatea acestora este atât foarte importantă, cât și adesea subevidențiată. În timp ce astfel de tehnici precum analiza amenințărilor sunt din ce în ce mai recunoscute ca fiind esențiale pentru orice dezvoltare serioasă, există și câteva practici de bază pe care fiecare dezvoltator le poate și ar trebui să le facă, de la sine înțeles.

05 ianuarie 2017
Cade Cairns este un dezvoltator de software cu o pasiune pentru securitate. Are experiență în conducerea echipelor care creează totul, de la aplicații de întreprindere la software de testare a securității, aplicații mobile și software pentru dispozitive încorporate. În prezent, accentul său principal este să ajute la îmbunătățirea modului în care sunt abordate problemele de securitate în timpul ciclului de viață al livrării soluției.
Daniel Somerfield este lider tehnic la ThoughtWorks, unde lucrează cu clienții construind sisteme care să le satisfacă nevoile de afaceri și să fie rapide, flexibile și sigure. Daniel este un avocat al infrastructurii imuabile și al automatizării în cloud ca vehicul pentru a avansa starea livrării sigure și agile la ThoughtWorks și în industria în general.
Cuprins
- Încredere
- Respingeți introducerea neașteptată a formularului
- Intrare de încredere
- Validare intrare
- In practica
- În concluzie
- Codificați ieșirea HTML
- Riscuri de ieșire
- Codare ieșire
- Atenționări și avertismente
- În concluzie
- Parametrii de legare pentru interogările bazei de date
- Micile Mese Bobby
- Legarea parametrilor la salvare
- Cod curat și sigur
- Concepții greșite comune
- Funcții de legare a parametrilor
- În concluzie
- Protejați datele în tranzit
- HTTPS și Transport Layer Security
- Obțineți un certificat de server
- Configurați-vă serverul
- Folosiți HTTPS pentru orice
- Folosiți HSTS
- Protejați cookie-urile
- Alte riscuri
- Verificați configurația
- În concluzie
- Hash and Salt Parolele utilizatorilor dvs.
- Trăind periculos
- Riscurile
- Pot Hash Passwordz
- Un strop de sare
- Folosiți un hash care merită sarea
- Încă o dată cu Hashing
- Sfaturi finale
- În concluzie
- Trăind periculos
- Autentificați utilizatorii în siguranță
- Înțelegeți opțiunile dvs.
- Autentificați din nou pentru acțiuni importante
- Ascundeți dacă există utilizatori
- Prevenirea atacurilor de forță brută
- Nu utilizați acreditări implicite sau codificate în mod dur
- În cadre
- În concluzie
- Protejați sesiunile utilizatorilor
- Generați identificatori de sesiune siguri
- Nu expuneți identificatorii de sesiune
- Protejați-vă cookie-urile
- Gestionarea ciclului de viață al sesiunii
- Verifică-l
- În cadre
- În concluzie
- Autorizați acțiuni
- Autorizați pe server
- Refuză implicit
- Autorizați acțiuni privind resursele
- Utilizați politica pentru a autoriza comportamentul
- Implementarea RBAC
- Implementarea ABAC
- Alte modalități de modelare a politicii
- Considerații privind implementarea
- În concluzie
Barele laterale
Dezvoltatorul de software modern trebuie să fie ceva de genul unui cuțit elvețian. Desigur, trebuie să scrieți cod care să îndeplinească cerințele funcționale ale clienților. Trebuie să fie rapid. În plus, vă așteptați să scrieți acest cod pentru a fi ușor de înțeles și extensibil: suficient de flexibil pentru a permite natura evolutivă a cerințelor IT, dar stabil și fiabil. Trebuie să puteți stabili o interfață utilizabilă, să optimizați o bază de date și să configurați și să întrețineți adesea o conductă de livrare. Trebuie să poți face aceste lucruri până ieri.
Undeva, în josul listei de cerințe, în spatele, rapid, ieftin și flexibil este „sigur”. Adică, până când ceva nu merge bine, până când sistemul pe care îl construiți este compromis, atunci brusc securitatea este, și a fost întotdeauna, cel mai important lucru.
Securitatea este o preocupare multifuncțională un pic ca Performanța. Și puțin diferit de Performanță. La fel ca Performanța, proprietarii de afaceri știu adesea că au nevoie de securitate, dar nu sunt întotdeauna siguri cum să o cuantifice. Spre deosebire de Performanță, de multe ori nu știu „suficient de sigur” când o văd.
Deci, cum poate un dezvoltator să lucreze într-o lume cu cerințe de securitate vagi și amenințări necunoscute? Pledarea pentru definirea acestor cerințe și identificarea acestor amenințări este un exercițiu demn, dar care necesită timp și, prin urmare, bani. De cele mai multe ori dezvoltatorii vor funcționa în absența unor cerințe specifice de securitate și, în timp ce organizația lor se luptă cu găsirea de modalități de a introduce probleme de securitate în procesele de admisie a cerințelor, vor construi în continuare sisteme și vor scrie cod.