Privacy Power-Up: Pin-linkkien päivittäminen HTTP:stä HTTPS:ään

Pinterest Engineering
Pinterest Engineering

Follow

Nov 19, 2019 – 4 min read

Maria de Angelis | Kesän 2019 Pinterest-insinööriharjoittelija

HTTPS:n pitäisi olla kaikkialla. Verkkosivustosi toimii todennäköisesti HTTPS:n kautta, mikä antaa käyttäjillesi turvallisen, salatun yhteyden, mutta entä kaikki lähtevät linkit? Voitko taata, että ne kaikki käyttävät HTTPS:ää? Tässä postauksessa kuvaamme vaiheet, joilla päivitimme Pin-linkit HTTP:stä HTTPS:ään hyödyntämällä DuckDuckGon älykkäämpää salaustekniikkaa.

Miksi HTTPS?

Vaikka Pinterest toimii kokonaan HTTPS:llä, se ei ole useimmille käyttäjille lopullinen määränpää. Koska Pinterest on paikka, jossa Pinnerit voivat löytää ja tehdä sitä, mitä he rakastavat, se on lähtölaukaus muille verkkosivustoille. Näin ollen meillä on velvollisuus ohjata Pinnerit HTTPS-sivustoille aina kun se on mahdollista, mukaan lukien lähtevien Pin-linkkien päivittäminen HTTP:stä HTTPS:ään, kun se on mahdollista, ja HTTPS:n kautta kulkevan liikenteen prosenttiosuuden maksimoiminen.

Syy siihen, että HTTP-liikennettä on olemassa, on yksinkertaisesti se, että monet Pinsit on luotu sillä tavalla. Kun Pinner klikkaa Pin-linkkiä, hänet lähetetään HTTP-sivustolle, jos sisältö on luotu HTTP-osoitteella. Jos sivusto kuitenkin tukee HTTPS:ää, haluamme lähettää käyttäjän HTTPS-versioon. Päätimme tehdä verkkopäivityksen HTTPS:ään, jotta voisimme maksimoida tuloksen kaikilla Pinterest-pinnoilla.

Parannusten tekemisen jälkeen noin 80 % lähtevästä liikenteestä kulkee nyt HTTPS:n kautta, mikä on yli 30 %:n lisäys.

Varmistuaksemme siitä, että tämä muutos ei vaikuta tärkeisiin mittareihin, teimme kokeen, jossa julkaisimme nämä muutokset 1 %:lle käyttäjistä ja vertasimme heitä vastaavaan kontrolliryhmään. Havaitsimme, että Pinterestin vertailumittareissa ei tapahtunut muutoksia, joten jatkamme kokeilun julkaisemista useammille Pinterest-käyttäjille. HTTPS-linkit ovat vihreitä ja HTTP-linkit punaisia. Kun toisen kuvan kokeilu otetaan käyttöön, useimmat punaiset Pinsit muuttuvat vihreiksi, koska niiden linkit voidaan päivittää HTTPS:ään.

Smarter Encryption by DuckDuckGo

Työskennellaksemme mahdollisimman tehokkaasti integroimme DuckDuckGon Smarter Encryption -tekniikan, joka käyttää automaattisesti salattuja yhteyksiä verkkosivuille, kun ne ovat käytettävissä. DuckDuckGo sopi meille täydellisesti, koska se ylläpitää kattavaa luetteloa päivitettävistä sivustoista, joka luodaan vertaamalla sivuston HTTP- ja HTTPS-versiota ja lisäämällä sivusto HTTPS-päivitysluetteloon, jos nämä kaksi versiota ovat identtiset. Voimme sitten säännöllisesti vetää ja imuroida heidän luettelonsa.

Pinterest-arkkitehtuuri

Kun käyttäjä selaa Pinterestin kotisyötettä, API-kerroksessa tehdään pyyntö noutaa Pins-kuvakkeet, joka sitten kutsuu Apache Thrift-palvelua PinAndBoardService, joka sitten noutaa Pins-kuvakkeet MySQL-tietokannasta.

Kuva 2: Yksinkertaistettu esitys Pinien noutoarkkitehtuurista. API-kerros tekee pyynnön PinAndBoardService-palvelulle, joka sitten hakee Pinin välimuistista tai MySQL:stä.

Yleiskatsaus

Toteuttaaksemme Pin-linkkien muuntamisen, me:

  1. Triggeroimme, ajetaanko koe API-kerroksessa vai ei.
  2. Jos kokeilu on käytössä, kutsutaan API-kerroksessa PinAndBoardService-palveluun hiljattain lisättyä päätepistettä.
  3. Tarkistetaan uudessa PinAndBoardService-päätepisteessä, alkaako Pinnin URL-osoite HTTP:llä, kun se haetaan tietokannasta tai välimuistista, jolloin se tulisi mahdollisuuksien mukaan päivittää HTTPS:ään.
  4. Tarkista, voidaanko Pin päivittää HTTPS:ksi poistamalla verkkotunnus URL-osoitteesta ja tarkistamalla, sisältyykö verkkotunnus DuckDuckGon Smarter Encryption -palvelun tarjoamaan turvallisten verkkotunnusten luetteloon.
  5. Suorita muunnos ja päivitä linkki, jotta kaikki jatkopalvelut saavat suojatun version.
  6. Päädyimme suorittamaan linkin muuntamisen PinAndBoardService-palvelussa emmekä suoraan MySQL-tietokannassa useista syistä:
  7. Jos päivittäisimme HTTP-linkin HTTPS:ksi MySQL-kerroksessa ja myöhemmin kyseinen verkkotunnus ei enää tukisi HTTPS:ää, Pin-linkki katkeaisi emmekä pystyisi jäljittämään muutosta, koska linkkiä olisi muutettu pysyvästi. Tämän ongelman ratkaisemiseksi olisimme voineet tallentaa sekä vanhan että uuden linkin MySQL-tietokantaan, mutta se ei olisi ollut yhtä tilatehokasta kuin nykyinen lähestymistapa.
  8. Vaikka joudumme suorittamaan muunnoksen joka kerta, kun PIN-kortti haetaan tietokannasta (riippumatta siitä, onko se jo päivitetty), voimme yleensä välttää turhaa hakua, koska PIN-kortit ovat hyvin välimuistissa.

Jatkotoimenpiteet

Jatkossa tutkimme Pinsin pysyvää päivittämistä suojatuiksi HTTPS-linkkeiksi heti luotaessa, mikä on suuri askel kohti yleistä HTTPS-käyttöä ja suurempaa turvallisuutta kaikille käyttäjille alustallamme. Seuraamme myös linkkejä, joita emme voi tällä hetkellä päivittää, jotta voimme mahdollisesti edistää DuckDuckGon älykkäämpää salausta parantaaksemme kaikkien käyttäjien käyttökokemusta.

Kiitokset

Suuret kiitokset Emanuele Cesenalle (mahtavalle harjoittelijan mentorilleni) ja Pinterestin muulle turvallisuustiimille! Suuret kiitokset myös CoreService-, Storage & Caching- ja API-tiimeille tuen antamisesta ja DuckDuckGolle varhaisesta pääsystä heidän Smarter Encryption -teknologiaansa.

Vastaa

Sähköpostiosoitettasi ei julkaista.