Protecție împotriva vulnerabilităților

Din când în când, este raportată o breșă de securitate pe un alt site web important sau o breșă este exploatată. Acest lucru este neplăcut. Dacă vă pasă de securitatea aplicațiilor dvs. web, Nette Framework este cu siguranță cea mai bună alegere.

Cross-Site Scripting (XSS)

Cross-Site Scripting este o metodă de compromitere a paginilor web care exploatează ieșirile neprocesate. Atacatorul poate apoi injecta propriul cod în pagină și astfel poate modifica pagina sau chiar obține date sensibile despre vizitatori. Protecția împotriva XSS se poate realiza doar prin procesarea consecventă și corectă a tuturor șirurilor. Este suficient ca programatorul dvs. să omită acest lucru o singură dată, și întregul site poate fi compromis instantaneu.

Un exemplu de atac poate fi injectarea unei URL modificate către utilizator, prin care injectăm propriul cod în pagină. Dacă aplicația nu procesează corect ieșirile, scriptul se va executa în browserul utilizatorului. În acest fel, îi putem fura identitatea, de exemplu.

https://example.com/?search=<script>alert('Atac XSS reușit.');</script>

Nette Framework vine cu o tehnologie revoluționară Escapare sensibilă la context, care vă scapă definitiv de riscul Cross-Site Scripting. Toate ieșirile sunt procesate automat, astfel încât nu se poate întâmpla ca programatorul să uite ceva. Un exemplu? Programatorul creează acest șablon:

<p onclick="alert({$message})">{$message}</p>

<script>
document.title = {$message};
</script>

Notația {$message} înseamnă afișarea variabilei. În alte framework-uri, este necesar să procesați explicit fiecare afișare și chiar diferit în fiecare loc. În Nette Framework, nu este nevoie să procesați nimic, totul se face automat, corect și consecvent. Dacă atribuim variabilei $message = 'Lățime 1/2"', framework-ul va genera codul HTML:

<p onclick="alert(&quot;Lățime 1\/2\&quot;&quot;)">Lățime 1/2&quot;</p>

<script>
document.title = "Lățime 1\/2\"";
</script>

Cross-Site Request Forgery (CSRF)

Atacul Cross-Site Request Forgery constă în faptul că atacatorul atrage victima pe o pagină care execută discret în browserul victimei o cerere către serverul pe care victima este autentificată, iar serverul crede că cererea a fost executată de victimă din proprie voință. Astfel, sub identitatea victimei, se efectuează o anumită acțiune, fără ca aceasta să știe. Poate fi vorba de modificarea sau ștergerea datelor, trimiterea unui mesaj etc.

Nette Framework protejează automat formularele și semnalele în presentere împotriva acestui tip de atac. Acest lucru se realizează prin prevenirea trimiterii sau invocării lor dintr-un alt domeniu. Dacă doriți să dezactivați protecția, utilizați pentru formulare:

$form->allowCrossOrigin();

sau, în cazul unui semnal, adăugați adnotarea @crossOrigin:

/**
 * @crossOrigin
 */
public function handleXyz()
{
}

În Nette Application 3.2 puteți utiliza și atribute:

use Nette\Application\Attributes\Requires;

#[Requires(sameOrigin: false)]
public function handleXyz()
{
}

Atac URL, coduri de control, UTF-8 invalid

Diferiți termeni legați de încercarea atacatorului de a injecta o intrare malițioasă în aplicația dvs. web. Consecințele pot fi foarte diverse, de la deteriorarea ieșirilor XML (de ex., canale RSS nefuncționale) până la obținerea de informații sensibile din baza de date sau parole. Apărarea constă în procesarea consecventă a tuturor intrărilor la nivel de octeți individuali. Și, sincer, cine dintre voi face asta?

Nette Framework face acest lucru pentru dvs., și în plus, automat. Nu trebuie să configurați absolut nimic și toate intrările vor fi procesate.

Session hijacking, session stealing, session fixation

Gestionarea sesiunilor este asociată cu mai multe tipuri de atacuri. Atacatorul fie fură, fie injectează ID-ul său de sesiune utilizatorului și, datorită acestui fapt, obține acces la aplicația web fără a cunoaște parola utilizatorului. Apoi poate efectua orice acțiune în aplicație fără ca utilizatorul să știe. Apărarea constă în configurarea corectă a serverului și a PHP.

În același timp, Nette Framework configurează PHP automat. Astfel, programatorul nu trebuie să se gândească cum să securizeze corect sesiunea și se poate concentra pe deplin pe crearea aplicației. Acest lucru necesită însă funcția ini_set() activată.

Cookie-urile SameSite oferă un mecanism pentru a recunoaște ce a dus la încărcarea paginii. Ceea ce este absolut esențial pentru securitate.

Atributul SameSite poate avea trei valori: Lax, Strict și None (aceasta din urmă necesită HTTPS). Dacă cererea pentru pagină provine direct de pe site sau utilizatorul deschide pagina introducând direct adresa în bara de adrese sau făcând clic pe un marcaj, browserul trimite serverului toate cookie-urile (adică cu atributele Lax, Strict și None). Dacă utilizatorul ajunge pe site făcând clic pe un link de pe un alt site, serverului i se transmit cookie-urile cu atributele Lax și None. Dacă cererea este generată în alt mod, cum ar fi trimiterea unui formular POST de pe un alt site, încărcarea într-un iframe, prin JavaScript etc., se trimit doar cookie-urile cu atributul None.

Nette trimite implicit toate cookie-urile cu atributul Lax.

versiune: 4.0