Cu toții am văzut prin filme scenele cu hackeri care atacă instituții guvernamentale, sau diverse companii, iar cei atacați spun că nu pot identifica cu exactitate sursa, pentru că pare că vine dintr-o multitudine de surse și servere de peste tot din jurul lumii.

Vorbim bineînțeles de atacuri de natură digitală, nu rachete balistice.

Sau scenele când un hacker e urmărit de forțele de ordine, sau se încearcă identificarea lui, dar pare imposibilă pentru că toate request-urile, toată comunicarea trece prin zeci, sute de servere, atacatorul pierzându-și astfel urma.

Despre asta aș vrea să vorbim astăzi, chiar dacă poveștile astea par rupte din filmele cu hackeri, ele au la bază un concept foarte real denumit “proxy”, sau server proxy.

Și totuși, ce-i ăla?

Tradus în limba română, termenul de “proxy” ar însemna “a acționa în numele altcuiva”. Asta ne duce cu gândul că folosind un proxy delegăm o acțiune anume, dam cuiva un ordin, sau o comandă, iar cineva-ul respectiv va executa comanda respectivă pentru noi fără să pună întrebări.

Gândește-te la un proxy ca la un serviciu de taxi. Te urci și îi spui șoferului unde vrei să mergi, iar el te duce acolo fără ca tu să fie nevoie să faci vre-o altă acțiune. Mai mult de atât, să zicem că ai treabă într-un cartier puțin mai “rău famat” și deși deții o mașină personală, nu ai vrea să o folosești ca să te deplasezi acolo pentru că ți-e teamă că va fi furată, zgâriată, vandalizată șamd.

Totodată, cineva care te va vedea când cobori din mașina proprie și i-ar vedea numărul, ar putea culege câteva informații despre tine, cum ar fi județul din care provii, nivelul de trai pe care îl ai șamd. Deși partea asta e puțin dezechilibrată în România, dar asta rămâne între noi.

Așa că în cele din urmă folosești un taxi, care te scapă de toate grijile astea.

Analogia asta nu descrie decât unul din tipurile de servere proxy existente, dar care este de asemenea și cel mai popular.

Nu pe bune acum, ce este un Proxy?

Acum trecând la părțile un pic mai tehnice, în sine un proxy este doar un server care interceptează traficul dintre clienți și resurse.

Gândește-te la clienți ca la orice calculator cu un browser care încearcă să acceseze diferite pagini pe net, iar la resursele fiind serverele care deservesc acele pagini.

Și dacă ziceam mai înainte că proxy-ul interceptează traficul dintre aceștia 2, înseamnă evident că el se află undeva la jumate.

Deci el este tehnic doar un server intermediar, care nu permite accesul clienților direct la resurse.

Tipurile de proxy-uri

Proxy-urile se împart într-o multitudine de categorii mai mici cu comportamente și scopuri diferite, dar la nivel mai înalt, există 2 mari categorii:

1. Open Proxy

Diferența majoră dintre ele fiind în principal direcția în care merge traficul. Pentru Open proxies, ele sunt interpuse de cele mai multe ori între un PC și oricare site din internet. Dar el este acolo să filtreze traficul dinspre PC spre internet.

Pe când un reverse proxy acționează tocmai invers, el e acolo pentru a filtra traficul dinspre internet, spre o resursă anume.

Primul caz este cel despre care vorbeam la început când povesteam de hacker-ul care încearcă să-și ascundă urmele. Atunci când folosești un astfel de proxy pentru a accesa pagini de internet, va părea că toate request-urile sunt făcute de acel proxy, sursa inițială a request-ului și anume calculatorul tău, va fi ascunsă, în cele mai multe cazuri.

Spun în cele mai multe cazuri, pentru că și open proxies se împart în mai multe subcategorii, dar consider eu că relevante sunt 2:

  • Anonimizate
  • Transparente

Cele anonimizate sunt cele despre care spuneam mai devreme, că vor ascunde sursa inițială a request-ului, iar cele transparente sunt foarte similare cu situația în care nu ai folosi deloc un proxy.

În momentul în care request-ul făcut de tine ajunge la proxy, el este delegat mai departe printr-un nou request care va conține și sursa inițială a request-ului într-un header. Asta înseamnă că resursa finală va ști exact de unde a venit request-ul, chiar dacă el a trecut printr-un proxy.

2. Reverse Proxy

În cazul reverse proxy situația stă un pic diferit. Spuneam mai înainte că diferența dintre open și reverse proxies este direcția în care merge traficul. Asta înseamnă ca dacă un Open proxy preia request-ul de la PC-ul tău și îl dă mai departe spre internet, acoperindu-ți astfel identitatea, un reverse proxy funcționează un pic invers.

El este interpus de obicei în fața unui backend și preia traficul dinspre internet spre acest server de backend.

Dacă ar fi să facem o analogie simplă, gândește-te că la noi atunci când intri la metrou ți se cere să ai o cartelă de acces, pe când în alte țări ești liber să folosești metroul fără să prezinți niciun fel de tichet, dar la ieșire ești controlat.

Situația de la noi este un reverse proxy, iar cealaltă este un open proxy.

Reverse proxies sunt de mai multe feluri cu scopuri diferite, dar cel mai des întâlnite, de către mine cel puțin, sunt cele cu rol de load balancer și SSL proxy.

Load Balancer

Cele cu rol de load balancer sunt folosite în situațiile în care ai o aplicație sau un website care folosește mai multe servere web, nu doar unul. Proxy-ul interceptează traficul și încearcă să trimită request-urile în mod egal către toate serverele pentru a crea un nivel omogen de solicitare.

SSL Proxy

Cele cu rol de load balancer sunt folosite în situațiile în care ai o aplicație sau un website care folosește mai multe servere web, nu doar unul. Proxy-ul interceptează traficul și încearcă să trimită request-urile în mod egal către toate serverele pentru a crea un nivel omogen de solicitare.

Concluzie

Dacă ești un simplu utilizator și vrei să ai parte de mai multă initimitate online, vei fi interesat doar de Open Proxy. Dar totuși dacă doar ăsta e scopul tău, recomand mai degrabă să folosești un VPN în loc de proxy server, dar despre asta cu o altă ocazie.

Dacă vrei să înveți programare și nu știi de unde să începi

C# Masterclass s-ar putea să fie o alegere bună pentru tine. Cursul are peste 30 de ore de conținut și cuprinde toate noțiunile de care are nevoie un începător pentru a-și construi propriile aplicații de la zero, cât și pentru a trece de orice interviu tehnic.