Pentru majoritatea site-urilor web, aveți diferite domenii (pagina de pornire, profilul utilizatorului, pagina de administrare etc.), dintre care unele vor fi publice, iar altele vor trebui să fie restricționate numai la anumiți utilizatori. De multe ori doriți să identificați în mod unic utilizatorii, astfel încât să puteți oferi conținut personalizat sau să capturați informații specifice de la un utilizator. Multe site-uri trebuie, de asemenea, să protejeze o parte a site-ului, cum ar fi o zonă administrativă pentru a menține și actualiza conținutul site-ului. Într-un site CMS, unii utilizatori ar putea să creeze conținut, dar alții trebuie să aprobe acel conținut înainte de a fi difuzați publicului.
Oricare ar fi necesitatea, restricționarea sau personalizarea necesită identificarea fiecărui utilizator care accesează site-ul dvs. Pentru un site orientat către Internet destinat utilizatorilor generali, numele de utilizator și parola încă mai prevalează în mare parte deoarece nu există o opțiune mai bună. Există și alte opțiuni dacă lucrați în medii speciale, cum ar fi un Intranet al companiei, unde aveți un anumit control asupra vizitatorilor site-ului.
În timp ce o nevoie comună, logările și parolele sunt adesea tratate într-un mod care lasă site-ul și utilizatorii săi, inutil mai vulnerabili la atacurile de securitate. Urmând câteva bune practici, puteți să vă protejați mai bine site-ul și conținutul acestuia de la hackeri. Consecințele unei protecții proaste pot fi grave. Imaginați-vă un site în care orice utilizator ar putea posta conținut care părea a fi de la companie datorită unei gestionări defectuoase a parolei sau a unui magazin online în care orice utilizator ar putea vedea toate comenzile plasate pe site.
Să aruncăm o privire asupra câtorva considerații de securitate în timp ce lucrați cu logare și parole pe site-urile dvs. Web.
Conectarea este alcătuită dintr-un nume de utilizator care vă identifică și o parolă care validează că sunteți utilizatorul pe care îl susțineți. Site-urile web permit adesea utilizatorului fie să specifice un nume de utilizator particularizat, fie să utilizeze adresa de e-mail a utilizatorului ca nume de utilizator.
E-mailurile nu se schimbă adesea și majoritatea site-urilor web adună deja aceste informații, astfel încât utilizatorul va fi mai puțin probabil să-și uite e-mailurile decât un nume de utilizator pe care l-au creat. De asemenea, e-mailul va fi automat unic deoarece utilizatorii rar distribuie un cont de e-mail și cei care fac acest lucru, probabil că nu vor dori conturi separate.
Dezavantajele unui e-mail includ că două persoane care au un e-mail nu pot avea conturi separate. În plus, dacă site-ul dvs. are un motiv legitim ca o persoană să aibă mai multe conturi, este posibil să nu fie posibilă cu e-mailurile, dar să fie mai ușor de implementat utilizând numele de utilizator. De asemenea, este posibil ca un e-mail să fie mai ușor de hacking, deoarece utilizatorul folosește probabil același e-mail la fiecare site, dar majoritatea numelor de utilizatori nu vor fi mult mai greu de hacking, deoarece utilizatorii tind să reutilizeze numele de utilizator la fel de mult ca și reutilizarea parolelor.
Cu excepția cazului în care aveți un motiv anume de a evita o adresă de e-mail, preferați adresa de e-mail pentru numele de utilizator de conectare. Utilizarea e-mail-ului a devenit, de asemenea, norma pe site-uri web. Nu uitați, totuși, să oferiți un login pe bază de e-mail cu o modalitate de a schimba e-mailul. Fără această funcție, un utilizator ar trebui să creeze un cont nou și să-și piardă istoria trecută doar pentru că a schimbat furnizorii de Internet sau a pierdut un cont anterior din cauza absolvirii sau schimbării locurilor de muncă,.
Fiți întotdeauna atenți în timp ce utilizați e-mailul ca autentificare pentru a nu-l arătați public, atât din motive de confidențialitate, cât și prin probleme de prevenire a spamului.
Pagina de conectare a site-ului dvs. va fi primul punct de cercetare pentru un hacker. Hackerul va încerca să determine conturile valide existente pe un site Web. Manipularea corectă a paginii de conectare va face munca hackerului mai dificilă. Pentru a începe, ar trebui să minimalizați cantitatea de date pe care un furnizor nereușit îl oferă unui atacator. Ideea inițială atunci când cineva introduce un nume de utilizator care nu este recunoscut ar putea fi să furnizeze un mesaj util că ar trebui să verifice numele de utilizator. Puteți furniza o pagină mai sigură prin afișarea aceluiași mesaj de eroare atunci când numele de utilizator nu este găsit și când parola nu se potrivește cu parola pentru utilizatorul dat. Mesajul ar trebui să indice că combinația de nume de utilizator și parolă nu a fost corectă, pentru a permite utilizatorului să știe să verifice ambele informații, nu doar unul sau altul.
Dacă site-ul dvs. utilizează e-mailuri pentru numele de utilizator de conectare, un atacator poate valida cu ușurință dacă un utilizator are un cont în serviciul dvs. dacă returnați un mesaj diferit pentru un nume de utilizator necunoscut, comparativ cu o combinație de nume de utilizator și parolă eșuată. Aceasta face lucrurile un pic mai puțin convenabil pentru utilizator, dar securitatea adăugată este, în mod normal, cea mai bună tranzacție off.
Așa cum am remarcat, eliminând mesajul specific pentru un nume de utilizator nevalid, tranzacțiile au sporit securitatea pentru o experiență mai slabă a utilizatorului. Furnizarea unui mesaj că nu există un login va ajuta utilizatorul să notifice greșeli, cum ar fi tastarea Ioan
in loc de jon
Mai ușor. Acest mesaj ajută de asemenea un utilizator care nu își amintește numele de utilizator pe care l-au folosit pe site-ul dvs. Rețineți că aceste tipuri de mesaje oferă hackerilor o modalitate simplă și ușoară de a verifica dacă un utilizator există pe site-ul dvs..
De asemenea, vă puteți ajuta să eliminați un hacker, prin manipularea mai bună a tentativelor multiple de conectare. Accidentele greșite ale unui nume de utilizator sau al unei parole se întâmplă destul de frecvent dintr-un caracter eronat, transpunând două caractere sau utilizând parola pentru alt site în locul parolei corecte. Permiterea încercărilor nelimitate de conectare deschide ușa unui atac brutal de forță de a încerca în mod repetat nume de utilizator și parole pentru a determina autentificarea corectă. Uneltele automate și scripturile accelerează procesul, permițând unui hacker să lucreze metodic prin multe parole potențiale, până când găsesc login-ul corect.
Introducerea unui timp de întârziere în creștere după fiecare încercare de conectare nereușită îi ajută și pe foștii hackeri. Prima încercare de conectare se întâmplă în mod normal. Al doilea login este întârziat cu o fracțiune de secundă înainte de returnarea rezultatului. Încercările ulterioare sunt amânate din ce în ce mai mult înainte de a reveni la un răspuns. Această întârziere permite o întrerupere minimă pentru un utilizator legitim care a făcut o greșeală, dar încetinește hackerul încercând să forțeze site-ul.
Pentru datele mai sensibile, o abordare mai puternică poate fi luată prin blocarea contului după o serie de încercări eșuate. Blocarea contului o dezactivează temporar sau permanent. Blocarea blochează atacurile de forță brute ca după un punct, datele de conectare nu vor funcționa. O dezactivare temporară ar trebui să aibă un efect minim asupra utilizatorului, atâta timp cât este afișat un mesaj pentru motivul blocării. O blocare permanentă necesită ca utilizatorul să contacteze serviciul de asistență pentru remedierea problemei și să se potrivească mai bine cu datele de conectare, protejând datele importante.
Parolele reprezintă aspectul cel mai sensibil al autentificării. Nu stocați niciodată parole în text simplu. Nu. Vreodată. A face acest lucru înseamnă că aproape orice problemă de securitate poate expune informații de conectare. Chiar și parolele criptate ar trebui să fie evitate ca și cum hackerul obține acces la datele criptate procesul de decriptare poate fi mult mai ușor. Orice spațiu de stocare în care puteți obține o parolă facilitează un hacker să facă același lucru.
Parolele ar trebui să fie păstrate sărate și sparte. O sare este o valoare unică generată la întâmplare, stocată pentru fiecare autentificare și adăugată înainte de hash. Adăugarea sarei împiedică parolele identice să aibă același hash și împiedică un hacker să construiască o listă a rezultatului hash din eventualele combinații de parole în prealabil. Prin adăugarea hash-ului aleator, o parolă de aBC123
(nu utilizați niciodată așa ceva ca o parolă reală) va avea ca rezultat un hash diferit pentru fiecare utilizator.
O funcție hash transformă parola într-o valoare a lungimii fixe. Există funcții special concepute pentru parole precum PBKDF2 sau Bcrypt. Procesoarele GPU din plăcile grafice moderne pot efectua calculele necesare pentru hash și can pauză mulți algoritmi slabi repede. Mașinile dedicate pentru ruperea parolelor pot determina orice parolă de opt caractere sau mai puțin, în mai puțin de șase ore.
De obicei, utilizatorii tind să reutilizeze aceeași parolă pentru majoritatea site-urilor unde au conturi. Multe site-uri au început să testeze acreditările expuse din hack-urile de conectare majore la cont propriu și să contacteze utilizatorii ale căror combinații de nume de utilizator și parole se potrivesc. Evernote și Facebook au examinat recent datele de conectare eliberate de Adobe și au alertat utilizatorii utilizând aceleași acreditări.
Cea mai ușoară modalitate de a gestiona corect parolele este să utilizați instrumentele incluse în cadrul web. Securitatea parolei este complicată și obținerea unui singur lucru greșit poate lăsa parolele utilizatorului deschisă spre atac. Pasul pH oferă o bibliotecă de domenii publice pentru PHP folosind Bcrypt. Furnizorii de apartenență mai vechi din .NET folosesc hashuri mai slabe, dar noii furnizori universali utilizează PBKDF2. Rails oferă de asemenea o bijuterie Bcrypt.
Când vă asigurați în mod corespunzător parolele astfel încât acestea să nu poată fi preluate, veți pierde capacitatea de a oferi utilizatorului o parolă uitată. Apoi, trebuie să oferiți un mod alternativ pentru un utilizator care a uitat legitim parola pentru a reseta parola într-un mod sigur.
O pagină bună pentru resetarea parolei permite utilizatorului să schimbe parola fără a cunoaște parola actuală. Metoda tradițională permite utilizatorului să introducă adresa de e-mail și apoi trimite un link către o pagină Web care le permite să reseteze parola. Trimiterea unui link este mai sigură decât trimiterea unei parole deoarece noua parolă nu este creată până când utilizatorul accesează pagina. Trimiterea unei noi parole prin e-mail ar crea o nouă informație pe care oricine interceptarea e-mailului le-ar putea utiliza fără cunoștințele utilizatorului. Dacă cineva interceptează e-mailul și resetează parola, utilizatorul va ști când va accesa și va încerca să reseta parola.
O pagină bună de resetare nu ar trebui, de asemenea, să furnizeze validarea existenței unui cont. Logica este aceeași pe care am discutat-o în ceea ce privește neacordarea feedback-ului în cazul în care un cont nu există atunci când vă conectați. Chiar dacă logarea nu există în sistem. Cea mai bună abordare este de a furniza un mesaj că instrucțiunile au fost trimise la adresa de e-mail din fișier. Trebuie să trimiteți încă un e-mail la e-mailul introdus deoarece ar putea fi un caz legitim de a uita care e-mail a fost utilizat pentru un cont, cum ar fi introducerea unui e-mail de serviciu în loc de un e-mail personal.
Linkul pentru resetarea parolelor ar trebui proiectat astfel încât solicitarea de resetare să aibă o durată de viață limitată și poate fi utilizată doar o singură dată. Creați un jeton unic pentru fiecare solicitare de resetare, legat de contul solicitat și stocați-l într-o bază de date. Acest jeton devine parte din adresa URL trimisă prin e-mail pentru a reseta parola. De asemenea, tokenului i se atribuie un timp de expirare și se elimină după finalizarea resetării. Dacă cineva încearcă să utilizeze un jeton care a fost deja utilizat sau expirat, solicitarea ar eșua. Timpul de expirare trebuie să fie suficient de lung pentru a permite primirea e-mailului și utilizatorului pentru a finaliza acțiunea, dar nu atât timp cât să permită utilizarea prea departe în viitor. Un interval de timp de câteva ore de obicei va fi suficient.
Resetarea unei parole prin e-mail face ca securitatea site-ului dvs. să depindă de integritatea e-mail-ului utilizatorului. Dacă e-mailul poate fi accesat, atunci persoana respectivă poate reseta parola. Site-urile pot adăuga întrebări de securitate la care trebuie să se răspundă înainte de resetarea parolei. Întrebările de securitate oferă puțină siguranță suplimentară dacă răspunsurile sunt ușor de găsit. O întrebare de securitate a "Ce este orașul meu natal?" oferă puțină siguranță dacă răspunsul poate fi găsit pe profilul Facebook al persoanei. Pentru mai multe informații despre dezvoltarea unor întrebări bune, consultați http://goodsecurityquestions.com/.
Un login și o parolă necesită doar o pereche de informații pentru a accesa un site web. Atunci când aceste informații sunt furnizate, atunci se presupune că utilizatorul este persoana corectă. Pentru a face ca acreditările de furt să fie mai puțin eficiente, puteți adăuga un al doilea pas în procesul de autentificare. Pe lângă ceea ce știe utilizatorul (numele de utilizator și parola), utilizatorul trebuie de asemenea să folosească ceva pe care îl deține în posesia actuală, de obicei un telefon mobil prin SMS sau o aplicație în acest scop.
Băncile au fost probabil primele care au implementat acest proces folosind hardware personalizat pentru a genera un cod dependent de timp. Google a popularizat utilizarea mesajelor text SMS sau a unei aplicații ca un al doilea pas. Multe site-uri utilizează acum un login compatibil cu implementarea de către Google a RFC 6238. Puteți găsi biblioteci care implementează deja această tehnică pentru cele mai populare cadre, cum ar fi ASP.NET, ASP.NET # 2, Ruby on Rails, PHP și Django.
Pentru a evita aceste probleme aveți o altă opțiune, permiteți altcuiva să se ocupe de toate acestea prin integrarea cu o terță parte pentru autentificare, cum ar fi Twitter, Facebook sau OpenID. Acest lucru oferă beneficii și dezavantaje. Aceasta elimină majoritatea preocupărilor legate de securitate pe care le discutăm aici, pe măsură ce altcineva se ocupă de aceste probleme. Cu toate acestea, aceste alte site-uri sunt, de asemenea, probabil, o tinta mai mare de hackeri decat tine. Dacă utilizați alt site pentru a gestiona autentificarea, atunci dacă această conectare este compromisă, hackerii au acces la site-ul dvs..
Folosirea unei terțe părți cunoscute poate ajuta și răni dintr-o reputație și din punct de vedere social. Avantajul de a permite conectarea cu Facebook sau Twitter este că atât de mulți utilizatori au deja conturi acolo că ar fi bucuroși să o folosească. Alți vizitatori pot vedea integrarea cu aceste site-uri ca o caracteristică negativă și nu pot folosi site-ul dvs. din cauza acestuia sau dacă este singura opțiune care le este oferită.
Login-ul aplicației dvs. web joacă un rol esențial în securizarea site-ului dvs. Grijul pentru a vă proteja datele de conectare va face mult pentru a vă proteja site-ul, utilizatorii site-ului dvs. și informațiile lor private. Pentru a lucra în siguranță cu datele de conectare, reduceți la minimum cantitatea de date pe care paginile dvs. de autentificare și de resetare a parolei le-ar putea furniza unui hacker. De asemenea, puneți măsuri de securitate pentru a face mai greu să ghiciți parolele utilizatorului prin intermediul unei forțe brutale.
Protecția parolelor este o preocupare critică a oricărui site. Parolele protejate prost simplifică activitatea hackerilor și se pot încheia cu datele de autentificare ale site-ului dvs. expuse publicului. Folosirea parolelor șarpe și sărate face munca hackerului mult mai dificilă. În plus, adăugarea opțiunii unui al doilea pas la procesul de conectare poate oferi mai multă protecție pentru utilizatorii site-ului dvs. De asemenea, puteți alege să utilizați o terță parte pentru a gestiona datele de conectare pe site-ul dvs..