Privacy Power-Up: Upgrading Pin Links from HTTP to HTTPS

Pinterest Engineering
Pinterest Engineering

Follow

19 noiembrie, 2019 – 4 min citește

Maria de Angelis | Summer 2019 Pinterest Engineer Intern

HTTPS ar trebui să fie peste tot. Site-ul dvs. web rulează probabil pe HTTPS, oferindu-le utilizatorilor dvs. o conexiune sigură și criptată, dar cum rămâne cu toate legăturile de ieșire? Puteți garanta că toate acestea folosesc HTTPS? În această postare, descriem pașii pe care i-am urmat pentru a actualiza legăturile Pin de la HTTP la HTTPS prin utilizarea tehnologiei Smarter Encryption de la DuckDuckGo.

De ce HTTPS?

În timp ce Pinterest rulează în întregime pe HTTPS, acesta nu este destinația finală pentru majoritatea utilizatorilor. Fiind un loc în care Pinnerii descoperă și fac ceea ce le place, Pinterest este rampa de lansare pentru a ajunge la alte site-uri web. Ca atare, avem responsabilitatea de a redirecționa Pinnerii către site-uri HTTPS ori de câte ori putem, inclusiv prin actualizarea legăturilor de ieșire a Pin-urilor de la HTTP la HTTPS atunci când este posibil și maximizarea procentului de trafic prin HTTPS.

Motivul pentru care există trafic HTTP este pur și simplu faptul că multe Pin-uri au fost create în acest mod. Atunci când un Pinner face clic pe un link Pin, acesta va fi trimis pe site-ul HTTP dacă conținutul a fost creat cu un URL HTTP. Cu toate acestea, dacă site-ul acceptă HTTPS, dorim să trimitem utilizatorul la versiunea HTTPS. Am decis să efectuăm o actualizare online la HTTPS, astfel încât să putem maximiza rezultatul pe toate suprafețele Pinterest.

După ce am făcut îmbunătățirile, aproximativ 80% din traficul de ieșire este acum prin HTTPS, o creștere de peste 30%.

Pentru a ne asigura că această schimbare nu a interferat cu indicatorii importanți, am efectuat un experiment pentru a lansa aceste modificări la 1% dintre utilizatori și pentru a-i compara cu un grup de control echivalent. Am constatat că nu a existat nicio schimbare în metricile Pinterest de referință, așa că vom continua să eliberăm experimentul pentru mai mulți utilizatori Pinterest.

Figura 1: Pins-urile acestui tablou Pinterest sunt codificate în culori în funcție de protocolul legăturilor lor. Legăturile HTTPS sunt verzi, iar cele HTTP sunt roșii. Atunci când experimentul este activat în cea de-a doua imagine, majoritatea Pins-urilor roșii devin verzi, deoarece legăturile lor pot fi actualizate la HTTPS.

Smarter Encryption by DuckDuckGo

Pentru a lucra cât mai eficient posibil, am integrat tehnologia Smarter Encryption de la DuckDuckGo, care utilizează automat conexiuni criptate la site-urile web atunci când sunt disponibile. DuckDuckGo s-a potrivit perfect pentru noi, deoarece menține o listă cuprinzătoare de site-uri care pot fi actualizate, generată prin compararea versiunilor HTTP și HTTPS ale unui site și prin adăugarea unui site pe lista de actualizare HTTPS dacă cele două versiuni sunt identice. Putem apoi să extragem și să ingerăm în mod regulat lista lor.

Arhitectura Pinterest

Când un utilizator parcurge feed-ul de acasă Pinterest, se face o cerere pentru a prelua Pins în stratul API, care apoi apelează serviciul Apache Thrift PinAndBoardService, care ulterior preia Pins din baza de date MySQL.

Figura 2: O reprezentare simplificată a arhitecturii de preluare a Pin-urilor. Stratul API face o cerere către PinAndBoardService, care apoi preia Pin-ul din cache sau din MySQL.

Vizualizare generală

Pentru a implementa conversia legăturii Pin, noi:

  1. Trimitem dacă să executăm sau nu experimentul în stratul API.
  2. Dacă experimentul este activat, apelăm un endpoint nou adăugat în PinAndBoardService în stratul API.
  3. În noul endpoint PinAndBoardService, verificăm dacă URL-ul unui Pin începe cu HTTP atunci când este preluat din baza de date sau din memoria cache, caz în care ar trebui să fie actualizat la HTTPS, dacă este posibil.
  4. Verificați dacă un Pin poate fi actualizat la HTTPS prin scoaterea domeniului din URL și prin verificarea dacă domeniul este conținut într-o listă de domenii securizate furnizată de DuckDuckGo’s Smarter Encryption.
  5. Realizați conversia și actualizați link-ul astfel încât toate serviciile din aval să primească versiunea securizată.
  6. Am ales să efectuăm conversia legăturii în PinAndBoardService în loc să o facem direct în baza de date MySQL din mai multe motive:
  7. Dacă am actualizat o legătură HTTP la HTTPS în stratul MySQL și mai târziu acel domeniu nu mai suporta HTTPS, legătura Pin s-ar rupe și nu am putea urmări schimbarea, deoarece legătura ar fi fost modificată permanent. Pentru a rezolva această problemă, am fi putut stoca atât linkul vechi, cât și cel nou în MySQL, dar acest lucru ar fi fost mai puțin eficient din punct de vedere al spațiului decât abordarea actuală.
  8. Deși trebuie să efectuăm conversia de fiecare dată când un Pin este preluat din baza de date (indiferent dacă a fost deja actualizat sau nu), în general putem evita preluarea redundantă, deoarece Pin-urile sunt foarte bine stocate în memoria cache.

Pasii următori

Pe măsură ce avansăm, explorăm posibilitatea de a actualiza permanent Pin-urile la link-uri HTTPS securizate la creare, un pas mare spre utilizarea universală a HTTPS și o securitate sporită pentru toți utilizatorii de pe platforma noastră. De asemenea, urmărim link-urile pe care nu le putem actualiza în prezent pentru a contribui potențial la DuckDuckGo’s Smarter Encryption, pentru a îmbunătăți experiența de utilizare pentru toți utilizatorii.

Recunoștințe

Mulțumiri uriașe lui Emanuele Cesena (minunatul meu mentor de stagiar) și restului echipei de securitate de la Pinterest! De asemenea, mulțumiri uriașe echipelor CoreService, Storage & Caching și API pentru că au oferit suport și DuckDuckGo pentru că a oferit acces anticipat la tehnologia lor Smarter Encryption.

.

Lasă un răspuns

Adresa ta de email nu va fi publicată.