8 moduri de a proteja aplicația web
Când este vorba de aplicații de securitate, este important să aibă grijă nu numai despre sistemul de operare și hardware-ul, dar, de asemenea, protejate cu privire la script-uri de scriere. În acest articol vă va învăța cum să asigure cererea dumneavoastră și face mai puțin vulnerabile. Mai jos este o listă de măsuri care vor ajuta să vă protejați aplicația de la toate tipurile de atacuri:
- Validarea datelor de intrare
- Protecție împotriva atacurilor XSS
- Protecție împotriva atacurilor CSRF
- Prevenirea SQL Injection
- de protecție a sistemului de fișiere
- Sesiunea de confidențialitate Politica
- eroare de manipulare
- Protectoare includ fișiere
Validarea datelor de intrare
Protecție împotriva atacurilor XSS
Cross-site scripting, sau atac XSS - un atac bazat pe punerea în aplicare a codului în paginile potențial vulnerabile. Pericolul este că codul malitios poate fi introdus prin intermediul formularului, iar apoi afișate în browser.
Pentru a proteja aplicațiile, dor de date primite prin strip_tags (). care va elimina toate etichetele prezente. La afișarea datelor într-un browser, utilizați htmlentities () funcție.
Protecție împotriva atacurilor CSRF
Următorul tip de atac, pe care ne vom uita la ea atacurile CSRF sau cerere cross-site fals. Atacatorul utilizează diverse trucuri pentru a obține informații confidențiale sau tranzacție fără consimțământul victimei. Acest lucru este în principal pe site-urile slab protejate, în cazul în care logica de afaceri se bazează pe cererile GET.
În general vorbind, GET cereri sunt idempotente. Idempotența, în acest context, înseamnă că accesul la aceeași pagină poate fi realizată orice număr de ori, fără nici un amestec din afară. De aceea, ar trebui să fie cereri GET folosite numai pentru a avea acces la informații, dar, în orice caz, nu pentru a efectua diverse tipuri de tranzacții.
Următorul exemplu simplu arată modul în care site-ul neprotejat poate fi supus atacului CSRF:
Browser-ul nu poate afișa această imagine, deoarece nu există, dar cererea va fi comisă fără știrea sau participarea Alice.
Așa cum a preveni acest tip de atac, utilizați numai cereri de POST la procesul de schimbare a informațiilor din baza de date. Nu utilizați $ _REQUEST. Utilizați _GET $ lea să se ocupe de parametrii GET, si $ _POST pentru a prelua parametrii POST.
Ca măsuri suplimentare pot genera unele indicativ unic și atașați-l la fiecare cerere POST. Atunci când un utilizator se conectează în sistem, puteți genera un token-uri aleatoare și scrie-l în sesiune. Din moment ce toate formele sunt afișate pentru utilizator, token-ul ar trebui să fie înregistrate într-un câmp ascuns. Funcționalitatea de logica de afaceri trebuie să fie prevăzută cererea, care va verifica identif formele și jetonul stocate în sesiune.
Prevenirea SQL Injection
Pentru a interoga baza de date pentru a utiliza DOP. Datorită interogări parametrizate și declarații pregătite, puteți nega amenințarea de injecție SQL.
Să considerăm următorul exemplu:
Codul prezentat mai sus, vom trimite o cerere de a pregăti metoda (). inclusiv numele parametrului. nume și: vârsta. Astfel, interogarea de date pre-compilate pentru substituție suplimentară. Când se apelează o metodă de executare (). interogare este complet format și executat. Dacă utilizați o tehnică similară, atunci toate atacatorul încearcă să pună în aplicare injecție SQL va fi redusă la zero.
de protecție a sistemului de fișiere
Ca dezvoltator responsabil, ar trebui să scrie întotdeauna un cod care nu este pus sub risc de sistemul de fișiere. Să ne uităm la codul, care dă saltul la dosar, în funcție de datele transmise de utilizator.
Acest script este foarte periculos, din cauza asta, puteți avea acces la orice director care este accesibil dintr-un fișier cu scriptul: directorul sesiunilor, dosarele de sistem și multe altele.
Sesiunea de confidențialitate Politica
În mod implicit, toate sesiunile de informare sunt înregistrate în directorul temp. Dacă utilizați virtual hosting, cineva în afară puteți scrie un script și să citească datele sesiunii. De aceea, păzește-te stocarea parole sau numere de cărți de credit în sesiunile.
Dacă toate la fel aveți nevoie pentru a stoca aceste date în cadrul sesiunii, cea mai bună măsură este de criptare. Aceasta nu rezolvă problema până la sfârșitul anului, deoarece datele criptate nu este 100% sigur, dar informațiile stocate vor fi imposibil de citit. De asemenea, trebuie să vă gândiți că datele de sesiune care pot fi stocate într-o altă locație, cum ar fi o bază de date. PHP are o metodă session_set_save_handler specială (). care vă permite să stocheze date de sesiune în felul său propriu.
Începând cu PHP 5.4, puteți trece un obiect de tip SessionHandlerInterface în session_set_save_handler ().
eroare de manipulare
În timpul dezvoltării de aplicații, ar trebui să acorde o atenție la toate tipurile de erori care pot apărea, cu toate acestea, ele trebuie să se ascundă de la utilizatorii finali. În cazul în care erorile sunt afișate pentru utilizatori, atunci face ca site-ul vulnerabil. Astfel, cea mai bună soluție ar fi o configurație diferită pentru serverul de destinație și serverul de dezvoltare.
Pe server public, trebuie să dezactivați opțiuni cum ar fi display_errors și display_start_up_errors. dar opțiuni cum ar fi error_reporting și log_errors. Tu trebuie să fie activ, astfel încât erorile din utilizatorii înregistrate în jurnalele.
Puteți utiliza, de asemenea „set_error_handler“ pentru a defini propria tratare a erorilor. Cu toate acestea, pot exista limitări, pentru propriul handler dă motorul PHP nativ. erori E_CORE_ERROR. E_STRICT sau E_COMPILER_ERROR nu pot fi prinse în același fișier, și în cazul în care un anumit procesor. Mai mult decât atât, erorile care pot apărea în handler și nu poate fi prins.
Pentru un mod mai elegant de capcane și excepții, cod potențial periculoase ar trebui să fie plasat într-un bloc try / catch. Toate excepțiile trebuie să fie propriile clase obiect sau subclase de excepție. În cazul în care excepții au fost aruncate, blocul try / catch pot fi prelucrate.
Protectoare includ fișiere
Dacă urmați regulile enumerate 8, în mare parte aceasta va consolida stabilitatea cererii dumneavoastră la diferite tipuri de atacuri. Nu au încredere în datele introduse de către utilizator, a proteja fișierele și baza de date.
Prin obținerea de informații de la două canale (vedere si auz) eficacitatea instruirii de învățare departe superioare de cărți. O temele pentru acasă și teste on-line vă va permite să se gândească în mod constant în limba țintă și imediat verifica cunoștințele!
Dacă doriți o lungă perioadă de timp pentru a studia modul în HTML, mi-ai, pentru ai vesti bune!
Dacă ați învățat deja HTML și doresc să avanseze, următorul pas va fi de a studia tehnologia CSS.
Dacă doriți să înțeleagă conceptele de domeniu si hosting, învață cum să creeze o bază de date, încărca fișiere pe un site web prin intermediul unui server FTP, crea subdomenii, configurați cutiile poștale pentru site-ul și să monitorizeze participarea, acest curs este conceput special pentru tine!