Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole

Viimastel aastatel pakuvad ĂŒha rohkem platvorme esiplaaniprojektide optimeerimiseks vĂ”imalusi iseseisvaks hostimiseks vĂ”i kolmandate osapoolte ressursside proksimiseks. Akamai vĂ”imaldab mÀÀrata spetsiifilisi parameetreid iseseisvalt loodud URL-idele. Cloudflare'il on tehnoloogia Edge Workers. Fasterzine suudab ĂŒmber kirjutada lehtede URL-e nii, et need viiksid kolmandate osapoolte ressurssidele, mis asuvad peamise veebisaidi domeenis.

Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole

Kui on teada, et teie projektis kasutatavad kolmandate osapoolte teenused ei muutu liiga sageli ning et nende klientidele edastamise protsessi saab parandada, siis mĂ”tlete kindlasti selliste teenuste proksimise peale. Sellise lĂ€henemisega saate need ressursid tĂ”enĂ€oliselt „lĂ€hedasemaks“ tuua kasutajatele ning saavutada suuremat kontrolli nende vahemĂ€llu salvestamise ĂŒle kliendi poolel. See vĂ”imaldab ka kaitsta kasutajaid kolmandate osapoolte teenuste ‘langemise’ vĂ”i nende jĂ”udluse halvenemisega seotud ebamugavuste eest.

Hea: jÔudluse tÔus

Iseseisev hostimine kolmandate osapoolte ressursidest parandab jĂ”udlust ĂŒsnagi nĂ€htaval viisil. Hoolimata sellest, et brauser ei pea uuesti pöörduma DNS-i poole, ei pea ta looma TCP-ĂŒhendust ja teostama TLS-kĂ€epigistust kolmanda osapoole domeenil. Seda, kuidas iseseisev hostimine kolmandate osapoolte ressursidest mĂ”jutab jĂ”udlust, saab nĂ€ha, vĂ”rreldes kahte jĂ€rgmist pilti.

Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole
Kolmandate osapoolte ressursid laaditakse vÀlisest allikast (vÔetud siit)

Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole
Kolmandate osapoolte ressursid salvestatakse seal, kus ka ĂŒlejÀÀnud veebisaidi materjalid (vĂ”etud siit)

Olukorda parandab veel see, et brauser kasutab HTTP/2-ĂŒhenduse multiplexerimise ja andmete prioriseerimise vĂ”imalusi, mis on juba loodud peamise domeeniga.

Kui te ei majuta oma serveris kolmandate osapoolte ressursse, ei saa neid prioriseerida, kuna need laaditakse erinevast domeenist. See viib olukorrani, kus nad konkureerivad omavahel kliendi ribalaiuse pÀrast. See vÔib tÀhendada, et lehekoostamisel kriitilise tÀhtsusega materjalide laadimisaeg osutub oluliselt pikemaks, kui see oleks ideaalsetes tingimustes. Siin esitlus HTTP/2 prioriseerimisest, kus kogu see teema on vÀga hÀsti selgitatud.

VĂ”ib eeldada, et vĂ€liste ressursside linkide atribuutide kasutamine preconnect aitab probleemi lahendada. Siiski, kui selliseid linke erinevatele domeenidele on liiga palju, vĂ”ib see tegelikult ĂŒle koormata sideĂŒksuse kĂ”ige kriitilisemal hetkel.

Kui hostida kolmandate osapoolte ressursse iseseisvalt, on vĂ”imalik kontrollida, kuidas need ressursid kliendini edastatakse. TĂ€psemalt öeldes on jutt jĂ€rgmise ĂŒle:

  • On vĂ”imalik tagada andmete tihendamise algoritmi kasutamine, mis sobib kĂ”ige paremini igale brauserile (Brotli/gzip).
  • Saab suurendada ressursside vahemĂ€lu aega, mis isegi kĂ”ige tuntumate pakkujate juures ei ole eriti suur (nĂ€iteks on GA sildi jaoks vastav vÀÀrtus seatud 30 minutiks).

Saab isegi suurendada ressursi TTL nÀitajat, nÀiteks aastani, kaasates vastavad materjalid oma vahemÀluhalduse strateegiasse (URL-i hashes, versioonimine jne). Nendest rÀÀgime allpool.

▍Kaitse kolmandate osapoolte teenuste katkestuste vĂ”i nende sulgemise eest

Veel ĂŒks huvitav aspekt kolmandate osapoolte ressurside iseseisvast hostimisest on see, et see vĂ”imaldab vĂ€hendada riske, mis on seotud kolmandate osapoolte teenuste katkestustega. Oletame, et teie kasutatav kolmanda osapoole A/B testimise lahendus on realiseeritud blokeeriva skriptina, mis laaditakse lehe pĂ€isesse. See skript laadib aeglaselt. Kui vastavat skripti ei Ă”nnestu laadida, jÀÀb leht tĂŒhjaks. Kui selle laadimiseks kulub vĂ€ga kaua aega, ilmub leht suure viivitusega. VĂ”i oletame, et projektis kasutatakse raamatukogu, mis laaditakse kolmanda osapoole CDN-ressursilt. Kujutame ette, et see ressurss on kokku kukkunud vĂ”i blokeeritud mĂ”nes riigis. Selline olukord viib saidi töö loogika rikkumiseni.

Kuidas teada saada, kuidas teie sait töötab olukordades, kus mÔni vÀline teenus ei ole saadaval, vÔite kasutada SPOF jaotist webpagetest.org.

Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole
SPOF jaotis webpagetest.org-is

▍Kuidas on lood brauserites ressursside vahemĂ€luprobleemidega? (nĂ€punĂ€ide: see on mĂŒĂŒt)

VĂ”ib arvata, et avalike CDN-ide kasutamine toob automaatselt paremat jĂ”udlust, kuna need teenused omavad piisavalt kvaliteetseid vĂ”rke ja on jaotatud ĂŒle kogu maailma. Kuid tegelikult on kĂ”ik natuke keerulisem.

Oletame, et meil on mitu erinevat veebisaiti: website1.com, website2.com, website3.com. KĂ”ik need saidid kasutavad jQuery teeki. Me ĂŒhendame selle CDN-iga, nĂ€iteks — googleapis.com. VĂ”ime eeldada, et brauser laadib teegi kord ja salvestab selle vahemĂ€lusse, seejĂ€rel kasutab seda kĂ”igis kolmes saidis. See vĂ”iks vĂ€hendada vĂ”rgu koormust. VĂ”ib-olla vĂ”ib see sÀÀsta kuskil ja aidata parandada ressursside jĂ”udlust. Praktiliselt aga nĂ€eb kĂ”ik teistsugune vĂ€lja. NĂ€iteks on Safaris rakendatud funktsioon, mida nimetatakse Intelligent Tracking Prevention: vahemĂ€lus kasutatakse kahtlustatud vĂ”tmeid, mis pĂ”hinevad dokumendi allikal ja kolmanda osapoole ressursi allikal. Siin hea artikkel selle teema kohta.

Vanad uuringud Yahoo ja Facebook, samuti uuemad uuring Pola Calvano, nĂ€itavad, et ressursid ei pĂŒsi brauseri vahemĂ€lu nii kaua, kui vĂ”iksime oodata: "Omanda ressursside ja kolmandate osapoolte ressursside vahemĂ€lu kestuse vahel on tĂ”sine lĂ”he. RÀÀgime CSS-ist ja veebifontidest. TĂ€psemalt, 95% enda fontide vahemĂ€lu kestus ĂŒletab nĂ€dalat, samas kui 50% kolmandate osapoolte fontide vahemĂ€lu kestus on alla nĂ€dala! See annab veebiarendajatele kaalukaid pĂ”hjuseid fontide failide ise hostimiseks!"

SeetÔttu, kui hostite oma juures teiste materjale, ei pruugi te mÀrkata veepidevuse probleeme, mida pÔhjustab brauseri vahemÀlu.

NĂŒĂŒd, kui oleme uurinud iseseisva hostimise tugevusi, rÀÀkigem sellest, kuidas head rakendust halvast eristada.

halb: devils on detailides

Kolmanda osapoole ressursside edastamine oma domeenile ei saa automaatselt toimuda ilma nende ressursside Ôige vahemÀllu salvestamiseta.

Üks peamisi probleeme siin on vahemĂ€lu aeg. NĂ€iteks versiooni teave lisatakse kolmandate osapoolte skriptide nimedes umbes nii: jquery-3.4.1.js. Selline fail ei muutu tulevikus, seega ei tekita see mingit probleemi selle vahemĂ€llu salvestamisega.

Kuid kui mingit versioonimise skeemi failide töötlemisel ei rakendata, vÔivad vahemÀllu salvestatud skriptid, mille sisu muutub sama faili nÔnna, aeguda. See vÔib kujuneda tÔsiseks probleemiks, nÀiteks ei lase see automaatselt rakendada turvaparandusi skriptidesse, mis peaksid vÔimalikult kiiresti jÔudma klientideni. Arendajal tuleb pingutada, et sarnased skriptid vahemÀlus uuendada. Lisaks vÔib see pÔhjustada rakenduse talitlushÀireid, kuna kliendi poolt vahemÀlust kasutatav kood erineb vÀrskest koodi versioonist, millele serveri osa on loodud.

TĂ”si, kui rÀÀgime sageli uuendatavatest materjalidest (siltide haldurid, A/B-testimise lahendused), siis nende vahemĂ€llu salvestamine CDN-idega on ĂŒlesanne, kuigi teostatav, on kordades keerulisem. Teenused nagu Commanders Act, silti haldavad lahendused, kasutavad uute versioonide avaldamisel veebikoonuseid. See vĂ”imaldab korraldada vahemĂ€lu tĂŒhjendamist CDN-is vĂ”i, mis veelgi parem, vĂ”imaldab vĂ€lja kutsuda uuenduse hash'i vĂ”i versiooni URL-ile.

▍Kohandatud materjalide edastamine klientidele

Lisaks, kui rÀÀgime vahemÀllu salvestamisest, tuleb arvesse vÔtta ka seda, et CDN-ides kasutatavad vahemÀllu salvestamise seadistused ei pruugi sobida teatud kolmandate osapoolte ressurssidega. NÀiteks vÔivad sellised ressursid kasutada kasutajaagendi nuhkimistehnoloogiat (user agent sniffing, adaptive serving), et edastada kindlatele brauseritele versioone materjalidest, mis on spetsiaalselt nende brauserite jaoks optimeeritud. Need tehnoloogiad tuginevad brauseri vÔimekuse mÀÀramiseks regulaaravaldustele vÔi andmebaasile, kus on kogutud teave HTTP-pealkirjade kohta. User-Agent. PÀrast seda, kui nad on teada saanud, millega nad tegelevad, edastavad nad sellele materjalid, mis on sellele sobivad.

Siin vÔib tuua meelde kaks teenust. Esimene - googlefonts.com. Teine - polyfill.io. Google Fonts teenus pakub, mÔne ressursi jaoks, erinevat CSS-koodi, mis sÔltub brauseri vÔimekusest (andmata linke woff2-ressursside, kasutades unicode-range).

Siin on tulemused paarist pÀringust Google Fonts-le, mis tehti erinevatest brauseritest.

Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole
Google Fonts'i pÀringute tulemus, mis on tehtud Chrome'ist

Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole
Google Fonts'i pÀringute tulemus, mis on tehtud IE10-st

Polyfill.io annab brauserile ainult need polĂŒfillid, mis talle vajalikud on. See toimub jĂ”udluse kaalutlustest.

Vaadakem nÀiteks, mis juhtub, kui teeme jÀrgmise pÀringu erinevates brauserites: https://polyfill.io/v3/polyfill.js?features=default

IE10-st tehtud pĂ€ringu vastuseks tuleb 34 KB andmeid. Chrome'ist tehtud pĂ€ringule on vastus tĂŒhi.

Halb: mÔningad kaalutlused privaatsuse kohta

See punkt on viimane jÀrjestuses, kuid mitte vÀhem oluline. Jutt on sellest, et kolmandate osapoolte ressursside iseseisev hostimine projekti peamisel domeenil vÔi selle alamdomeenil vÔib panna ohtu kasutajate privaatsuse ja avaldada negatiivset mÔju pÔhiprojekti veebilehele.

Kui teie CDN-sĂŒsteem on valesti seadistatud, vĂ”ib see lĂ”ppeda sellega, et saadate teie domeeni kĂŒpsised kolmandale teenusele. Kui CDN-i tasemel ei korraldata Ă”iget filtreerimist, vĂ”ivad teie sessiooni kĂŒpsised, mida tavaliselt ei saa kasutada JavaScriptis (millel on atribuut httponly), saadetakse kolmandale hostile.

Just see vĂ”ib juhtuda nĂ€iteks Euleriani vĂ”i Criteo jĂ€lgijatega. Kolmandad jĂ€lgijad vĂ”ivad paigaldada ainulaadse identifikaatori kĂŒpsisesse. Need, kui nad olid saidi sisu osaks, said lugeda identifikaatorit oma Ă€ranĂ€gemise jĂ€rgi, kui kasutaja töötas erinevate veebiresurssidega.

TĂ€napĂ€eval sisaldavad enamik brausereid kaitset sellise jĂ€lgijate kĂ€itumise vastu. Tulemuseks on, et nĂŒĂŒd kasutavad jĂ€lgijad tehnoloogiat CNAME Cloaking, maskeerides end erinevate projektide skriptide jĂ€rgi. Nimelt pakuvad jĂ€lgijad veebilehe omanikele CNAME-i lisamist oma seadistustesse mingiks domeeniks, mille aadress nĂ€eb vĂ€lja nagu juhuslik sĂŒmbolite kombinatsioon.

Kuigi ei ole soovitatav teha nii, et veebilehe kĂŒpsised oleksid kĂ”igile alamdomeenidele kergesti ligipÀÀsetavad (nĂ€iteks — *.website.com), tehakse seda paljudele veebilehtedele. Sel juhul saadetakse sellised kĂŒpsised automaatselt maskeeritud kolmandale jĂ€lgijale. Tulemuseks on, et mingist privaatsusest ei saa enam rÀÀkida.

Lisaks toimub sama ka HTTP-pealkirjadega Client-Hints, mis saadetakse ainult pÔhikodule, kuna neid saab kasutada loomiseks digitaalne jÀlg kasutaja. Pange tÀhele, et teie kasutatav CDN-teenus filtreerib selliseid pealkirju Ôigesti.

Summary

Kui plaanite varsti juurutada kolmandate osapoolte allikate iseseisvat hostimist, lubage mul anda teile mÔned nÔuanded:

  • Hoidke oma tĂ€htsaimad JS-raamatukogud, fondid ja CSS-failid oma serveris. See vĂ€hendab riski, et teie veebisaidi töö katkeb vĂ”i selle jĂ”udlus halveneb, kui vajalik ressurss, mis on veebisaidi toimimiseks hĂ€davajalik, ei ole saadaval kolmanda osapoole teenuse tĂ”ttu.
  • Enne kolmandate osapoolte ressursside vahemĂ€llu salvestamist CDN-is veenduge, et nende failide nimetamist kasutatakse mingisugust versiooni haldust vĂ”i et saate nende ressursside elutsĂŒkli hallata, kĂ€sitsi vĂ”i automaatselt tĂŒhjendades CDN-i vahemĂ€lu, kui avaldate uue versiooni skriptist.
  • Olge vĂ€ga ettevaatlik CDN-i, puhverserveri ja vahemĂ€lu seadistuste osas. See takistab teil saatmast oma projekti kĂŒpsiseid vĂ”i pealkirju Client-Hints kolmandate osapoolte teenustele.

Lugupeetud lugejad! Kas majutate oma serverites vÔÔraid materjale, mis on teie projektide toimimiseks ÀÀrmiselt olulised?

Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole
Iseseisev kolmandate osapoolte ressursside majutamine: hea, halb, kole

Allikas: habr.com

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster