Tiedostojen latausmoduulit ovat yksi verkkosovellusten heikoimmista lenkeistä. Kaikki tehdyt virheet, jopa ne, joita pidät pieninä, voivat johtaa palvelimen hallintaan suoraan kyberhyökkääjän käsiin. Tästä syystä ohjelmistokehittäjien on tiedettävä yleisimmät virheet ja jotkut hyökkäystavat, joita voi esiintyä.
Mitä on asiakaspuolen peukalointi? Kuinka voit torjua tätä, jotta sivustosi ja käyttäjäsi ovat turvassa?
Mitä on asiakaspuolen peukalointi?
Asiakaspuolen peukalointi on verkkosovellushyökkäysten peruskäsite kokonaisuudessaan. Yksinkertaisesti sanottuna se tarkoittaa, että et voi enää luottaa mihinkään käyttäjälle lähettämääsi dataan. Lisäksi asiakaspuolen peukalointi on yksi turvallisen sovelluskehityksen perusta. Jos tarkastelet käsittelemääsi tiedostojen latausmoduulia ja harkitset asiakaspuolen peukalointia, tiedot, joihin et voi luottaa, sisältävät:
- Ladatun tiedoston nimi.
- Ladatun tiedoston sisältötyyppi.
Nämä kaksi kohdetta ovat missä sinulla on mahdollisuus lisätä sallittujen luetteloon ohjelmistokehittäjänä. Ladatun tiedoston nimitiedot voivat sisältää mitä tahansa asiakaspuolen peukalointia. Ladatun tiedoston sisältötyyppitiedoilla tämä tiedosto saattaa näkyä järjestelmässä kuvana/jpeg-muodossa, vaikka hyökkääjä lataaisikin .exe-tiedoston.
Tiedoston laajennus ja valkoinen lista
Kun kehität tiedostojen latausmoduuleja, ensimmäinen asia on tiedostotunnisteen lisääminen sallittujen luetteloon. Käyttäjä haluaa esimerkiksi ladata tiedoston nimeltä "muo.jpeg". Sinun on varmistettava, että tämä tiedostopääte, jonka käyttäjä haluaa ladata, on .jpeg. Tätä varten järjestelmän tulee tarkistaa ladattu tiedosto ja tarkistaa, onko se jokin sallittu tiedostopääte. Ymmärtääksesi kuinka voit tehdä tämän, tutki seuraava yksinkertainen PHP-koodi:
$tiedoston_osat = polkutieto($tiedostonimi);
vaihtaa($file_parts['extension'])
{
tapaus "jpg":
tauko;tapaus "lepakko": // Tai exe, dll, niin jne.
tauko;
tapaus "":
tapausTYHJÄ: // Ei tiedostopäätettä
tauko;
}
Voit tehdä tämän yllä olevan kaltaisella koodilohkolla tai voit käyttää käyttämäsi kehyksen tarjoamia luokkia ja toimintoja.
Varo luomasta tiedostopäätetietoja jäsentämällä tiedostonimeä pisteen (.) mukaan, koska hyökkääjä voi ohittaa tämän tarkistusvaiheen tiedostonimellä, kuten "muo.jpeg.php".
Mitä on sisältötyyppinen tieto?
Sisältötyyppitiedot ovat tietoja, jotka lähetetään HTTP-pyynnössä kunkin tiedoston latauksen yhteydessä. Internet-selain havaitsee nämä tiedot ja lisää ne lähetettyyn pyyntöön. Hyökkääjä voi yrittää muuttaa tietoja asiakaspuolen peukaloilla ja ohittaa palvelinpuolen tarkistukset. Tässä vaiheessa kehittäjät tarvitsevat ohjausmekanismin sisältötyyppitietojen validointiin. Tämä ei yksin riitä; Silti se on tärkeä asia, johon kehittäjät kiinnittävät huomiota.
Oletetaan, että koodaat mekanismin, joka tarkistaa tiedostotunnisteen oikein, ja hyväksyt vain tiedostot, joiden tunniste on .jpeg. Tämän varomekanismin lisäksi voit tarkistaa sisältötyyppitiedot juuri sisään ja hyväksy vain tiedostot, joissa on kuva-/jpeg-tietoja, ylimääräinen suojaustaso kyberhyökkäykset
SWF-flash-tiedostot ja hyökkäysvaiheet
Tiedostotunniste ja sisältötyyppitiedot eivät tarkoita mitään Internet-selaimille, jotka tukevat laajennuksia, kuten Adobe Flash Player. Vaikka tuki kyseiselle soittimelle ei ole enää saatavilla, on silti mahdollista asentaa kyseiset tiedostot moniin järjestelmiin, vaikka Flash on edelleen turvallisuusriski. Järjestelmässä, joka ei ole ryhtynyt tarvittaviin varotoimiin, on mahdollista kutsua Flash-tiedosto
Voidakseen ryhtyä toimiin kehittäjien on tiedettävä reitit, joita kyberrikolliset voivat käyttää. Näin se voi tapahtua:
- Haitallinen hyökkääjä lataa kohdesivustolle SWF-tiedoston (Adobe Flash -tiedostomuoto), jonka nimi on "image.jpeg". Latausprosessin aikana sallittujen luettelon vahvistuksessa vahvistetaan, että hyökkääjän lataaman tiedoston tunniste on .jpeg. Sisältötyypin vahvistus ohitetaan asiakaspuolen peukaloinnin avulla. Kuvittele, että tämä uhkatekijän lataama tiedosto siirtyy osoitteeseen www (piste) kohdesivusto (piste) com/images/images.jpeg.
- Oletetaan, että hyökkääjällä on verkkosivusto nimeltä attacker (dot) com. Hyökkääjä kutsuu tämän sivuston kohdesivustolle ladattua image.jpeg-tiedostoa käyttämällä
- Viaton käyttäjä kirjautuu sisään hyökkääjä (dot) comiin. Tämä sivusto kutsuu SWF-tiedoston osoitteessa www (piste) target-site (piste) com/images/image.jpeg ja suorittaa SWF: lle annetut komennot.
- Tämän avulla kyberhyökkääjä voi luoda HTTP-pyyntötoimintoja kohdesivuston (piste) com-osoitteelle ilman, että tavalliset käyttäjät huomaavat sitä. Näillä pyynnöillä hyökkääjä käyttää viattoman käyttäjän istuntoa ja ohittaa CSRF-tarkistus.
Ymmärtääksesi tämän hyökkäysskenaarion selkeämmin, katso seuraava koodi olevan HTML-koodissa
tyyli ="korkeus: 1px; leveys: 1px;" data="www.target-site.com/images/image.jpeg" tyyppi="sovellus/x-shockwave-flash" salli scriptaccess="aina" flashvars="c=lue&u = jotain"
Yksi parhaista ratkaisuista on käyttää tiedostoja, jotka on ladattu tiedostonlatauksen kautta eri aliverkkotunnus. Edellä mainitussa tilanteessa voit käyttää staattisia tiedostoja ei samasta toimialueesta, vaan eri aliverkkotunnuksesta seuraavasti: "http (kaksoispiste)//file.target-site (piste) com/images/image.jpeg".
Toinen ratkaisu on lisätä Sisältö: Kiinnitys tiedot HTTP-vastaukseen, kun saat pyynnön päästä käsiksi tiedostoihin, jotka haluat ladata.
Ryhdy varotoimiin tiedostojen lataamisen haavoittuvuuksien varalta
Kaikki käyttäjien verkkosivustolle lataamat tiedostot ovat vaarallisia, joten tämä on yksi niistä ongelmista, joihin kehittäjien tulisi kiinnittää eniten huomiota. Jos hyökkääjät löytävät tällaisen haavoittuvuuden, he voivat avata kuoren sivustossa ja helposti hyödyntää palvelimella olevia tietoja. On erittäin tärkeää hallita kaikkia käyttäjien lataamia tiedostoja, käyttää sallittujen luettelomenetelmiä ja piilottaa ladatun hakemiston sijainti, jos mahdollista.
Ja tietysti on monia muita lisätoimenpiteitä, jotka sinun on suoritettava sivustosi suojaamiseksi, vaikka noudattaisit kaikki suositellut varotoimet tiedostomoduulien lataamisessa. HTTP-suojausotsikoiden käyttäminen on yksi tällainen vaihe, jonka voit ottaa.