window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versjon: 2, } ;(function () { var w = vindu if (w.LeadBooster) { console.warn('LeadBooster finnes allerede') } else { w.LeadBooster = { q: [], on: function (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: function (n) { this.q.push({ t: 't', n: n }) }, } } })() XSS-sikkerhet i populære Javascript-biblioteker. Bør jeg fortsatt være bekymret? - The Codest
The Codest
  • Om oss
  • Tjenester
    • Programvareutvikling
      • Frontend-utvikling
      • Backend-utvikling
    • Staff Augmentation
      • Frontend-utviklere
      • Backend-utviklere
      • Dataingeniører
      • Ingeniører i skyen
      • QA-ingeniører
      • Annet
    • Det rådgivende
      • Revisjon og rådgivning
  • Industrier
    • Fintech og bankvirksomhet
    • E-commerce
    • Adtech
    • Helseteknologi
    • Produksjon
    • Logistikk
    • Bilindustrien
    • IOT
  • Verdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leveransesjef
  • Vårt team
  • Casestudier
  • Vet hvordan
    • Blogg
    • Møter
    • Webinarer
    • Ressurser
Karriere Ta kontakt med oss
  • Om oss
  • Tjenester
    • Programvareutvikling
      • Frontend-utvikling
      • Backend-utvikling
    • Staff Augmentation
      • Frontend-utviklere
      • Backend-utviklere
      • Dataingeniører
      • Ingeniører i skyen
      • QA-ingeniører
      • Annet
    • Det rådgivende
      • Revisjon og rådgivning
  • Verdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leveransesjef
  • Vårt team
  • Casestudier
  • Vet hvordan
    • Blogg
    • Møter
    • Webinarer
    • Ressurser
Karriere Ta kontakt med oss
Pil tilbake GÅ TILBAKE
2019-08-26
Programvareutvikling

XSS-sikkerhet i populære Javascript-biblioteker. Bør jeg fortsatt være bekymret?

Daniel Grek

Når det gjelder de mest populære Javascript-bibliotekene, må man innrømme at det i løpet av deres utviklingshistorie (9, 6 og 5 år for henholdsvis Angular, React og Vue) har skjedd mye bra når det gjelder sikkerhet, spesielt i forbindelse med sårbarhet for XSS-angrep. Denne artikkelen tar imidlertid for seg de små fellene og prinsippene som utviklere fortsatt bør være oppmerksomme på.

XSS

Vi lever i en tid med rammeverk, ikke språk. Dette innebærer at programmerere bør kunne bekymre seg mindre om mange aspekter ved utviklingen, inkludert sikkerhet. De fleste av dagens backend-rammeverk implementerer sikkerhetsmoduler, som testes av eksterne, spesialiserte selskaper og store organisasjoner. Det er derfor viktig, synkende sikkerhetsbevissthet kan være tydelig, for eksempel mellom unge programmerere, som tar mer ansvar for produktene, spesielt når det gjelder frilansarbeid.

Et av de vanligste angrepene på klientsiden av applikasjonen er XSS (Cross-Site Scripting). Det utføres ved å injisere kjørbare skript på klientsiden i webapplikasjoner [1] og bruker implementerte HTML-renderingsmetoder eller Javascript kode evaluatorer som utfører den. XSS er relativt lukrativt ettersom mange ulike data kan samles inn, inkludert øktinformasjonskapsler eller brukerdata, og det kan installere et sporingsprogram som for eksempel en keylogger, noe som gjør det farlig for både brukere og bedriftseiere. Noen ganger utføres andre former for angrep for å tillate XSS på siden, for eksempel SQL-injeksjon.

Eksempel

Innloggingsskjemaet på siden gjengir loginName-parameteren som sendes i GET-forespørselen i innloggingsnavnet. Verdien behandles verken av server- eller klientsiden av applikasjonen. Ved å be om det: http://localhost:8080/login?name=<script>alert(document.cookies)</script>
kode kjøres og data eksponeres

Dette er et eksempel på en Reflektert XSS-angrep, der skript injiseres gjennom en spesielt forberedt URL-adresse som sendes til offeret og gjenspeiles av serverens svar. Andre kjente populære former for angrep er som følger:

  • Lagret XSS utføres med data som er lagret på serversiden, vanligvis ved hjelp av skjemaer som er tilgjengelige i applikasjonen. Klientapplikasjonen gjengir kode som for eksempel er lagret i en database.
  • DOM XSS utfører et XSS-angrep uten bruk av serversiden. I den videre delen av artikkelen vil vi fokusere på denne angrepsformen.

Aktuelle sårbarheter i React- og Vue-bibliotekene

For de nåværende versjonene av React/Vue er det oppdaget to store problemer som ennå ikke er offisielt løst. Den første sårbarheten er den samme for alle rammeverkene og er knyttet til metoder som tillater gjengivelse av rå HTML i maler: v-html og dangerouslySetInnerHTML, henholdsvis for Vue og React. Dokumentasjonen [2] informerer leserne om at ukyndig bruk kan utsette brukerne for XSS-angrep. Hvis det ikke finnes andre alternativer for å løse problemet, må du sørge for at dataene er filtrert og unnsluppet. Selv om de er farlige, bør du ikke forvente at disse metodene blir fikset. Bruk dem på egen risiko.

I første kvartal 2018 ble det oppdaget en stor feil i React, som muliggjorde direkte kjøring av kode ved å angi egenskapen for taggelementet. Overføring av eksempelkode i attributter, for eksempel javascript:alert(1) og kjører en gjengitt lenke, vil koden kjøres. Dette problemet [4] er fortsatt åpent, og ingen løsning er utarbeidet og slått sammen, så sørg for at koden din er trygg. Eksempler som er foreslått i den offisielle diskusjonen, foreslår noen måter å overvinne dette problemet på.

Hvis det ikke er mulig å oppdatere til de nyeste versjonene, må du sørge for at gamle problemer ikke skaper problemer for deg ved å sikre at koden din ikke er eksponert for:

  • barn node injeksjon - React, bruk av React.createElement [5]
  • serverside-rendering - React/Vue [6]
  • CSS-injeksjon [8]

Det handler fortsatt om Javascript. Det handler fortsatt om front-end

Ikke glem at Javascript som språk, i tillegg til selve rammeverkene eller bibliotekene, har noen farlige funksjoner som må unngås eller brukes med forsiktighet. De er vanligvis relatert til DOM-manipulering eller skriptutførelse. eval() representerer flaggskipfunksjoner av denne typen og er ekstremt farlig fordi den utfører gitt stringifisert kode direkte [9]. Ta også en bedre titt på koden din når du finner en av disse funksjonene:

  • document.write
  • document.writeln
  • (element).innerHTML
  • (element).outerHTML
  • (element).insertAdjacentHTML

Her kan det være nyttig å bruke linters med riktig regelsett for å finne slike sårbare punkter. Det finnes også mange åpne eller kommersielle kodeanalysatorer som kan hjelpe deg med å oppdage sikkerhetshull i utviklet kode.

Uansett hvilket bibliotek/rammeverk som velges, må vi fortsatt huske på grunnleggende prinsipper knyttet til frontend-utvikling. For det første må du alltid sørge for at den eksterne koden du injiserer, kommer fra en pålitelig kilde. Revisjon avhengighetene dine, og velg dem med omhu. Noen av dem kan inneholde alvorlige sårbarheter som kan eksponere koden din, selv om alt er i orden med selve koden. Du kan lese mer om sikkerhet i avhengigheter her:

https://thecodest.co/blog/security-in-javascript-packages/

Bør du fortsatt være bekymret?

Ja - og jeg oppfordrer alle til aldri å stole på eksterne biblioteker eller seg selv når det gjelder sikkerhet. Uansett hvor sikker du forventer at programvaren din skal være, bør du alltid gjøre en innsats for å teste den så mye som mulig med tanke på vanlige angrepsformer [10].

  1. https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml
  2. https://vuejs.org/v2/guide/syntax.html#Raw-HTML
  3. https://github.com/facebook/react/issues/12441
  4. http://danlec.com/blog/xss-via-a-spoofed-react-element
  5. https://medium.com/node-security/the-most-common-xss-vulnerability-in-react-js-applications-2bdffbcc1fa0
  6. https://github.com/dotboris/vuejs-serverside-template-xss
  7. https://frontarm.com/james-k-nelson/how-can-i-use-css-in-js-securely/
  8. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/eval#Do_not_ever_use_eval!

Les mer om dette:

5 feil du bør unngå når du vedlikeholder et prosjekt i PHP

PHP Utvikling. Symfony-konsollkomponent - tips og triks

Hvorfor trenger vi Symfony Polyfill (... og hvorfor vi ikke bør gjøre det)

Relaterte artikler

Programvareutvikling

Bygg fremtidssikre webapper: Innsikt fra The Codests ekspertteam

Oppdag hvordan The Codest utmerker seg når det gjelder å skape skalerbare, interaktive webapplikasjoner med banebrytende teknologi som gir sømløse brukeropplevelser på tvers av alle plattformer. Finn ut hvordan ekspertisen vår driver digital transformasjon og...

THECODEST
Programvareutvikling

Topp 10 Latvia-baserte programvareutviklingsselskaper

I vår nyeste artikkel kan du lese mer om Latvias beste programvareutviklingsselskaper og deres innovative løsninger. Oppdag hvordan disse teknologilederne kan bidra til å løfte virksomheten din.

thecodest
Løsninger for bedrifter og oppskalering

Grunnleggende om Java-programvareutvikling: En guide til vellykket outsourcing

Utforsk denne viktige veiledningen om vellykket outsourcing av Java-programvareutvikling for å øke effektiviteten, få tilgang til ekspertise og drive frem prosjektsuksess med The Codest.

thecodest
Programvareutvikling

Den ultimate guiden til outsourcing i Polen

Den kraftige økningen i outsourcing i Polen er drevet av økonomiske, utdanningsmessige og teknologiske fremskritt, noe som fremmer IT-vekst og et forretningsvennlig klima.

TheCodest
Løsninger for bedrifter og oppskalering

Den komplette guiden til verktøy og teknikker for IT-revisjon

IT-revisjoner sørger for sikre, effektive og kompatible systemer. Les hele artikkelen for å lære mer om viktigheten av dem.

The Codest
Jakub Jakubowicz CTO og medgrunnlegger

Abonner på vår kunnskapsbase og hold deg oppdatert på ekspertisen fra IT-sektoren.

    Om oss

    The Codest - Internasjonalt programvareutviklingsselskap med teknologisentre i Polen.

    Storbritannia - Hovedkvarter

    • Kontor 303B, 182-184 High Street North E6 2JA
      London, England

    Polen - Lokale teknologisentre

    • Fabryczna Office Park, Aleja
      Pokoju 18, 31-564 Kraków
    • Brain Embassy, Konstruktorska
      11, 02-673 Warszawa, Polen

      The Codest

    • Hjem
    • Om oss
    • Tjenester
    • Casestudier
    • Vet hvordan
    • Karriere
    • Ordbok

      Tjenester

    • Det rådgivende
    • Programvareutvikling
    • Backend-utvikling
    • Frontend-utvikling
    • Staff Augmentation
    • Backend-utviklere
    • Ingeniører i skyen
    • Dataingeniører
    • Annet
    • QA-ingeniører

      Ressurser

    • Fakta og myter om samarbeid med en ekstern programvareutviklingspartner
    • Fra USA til Europa: Hvorfor velger amerikanske oppstartsbedrifter å flytte til Europa?
    • Sammenligning av Tech Offshore Development Hubs: Tech Offshore Europa (Polen), ASEAN (Filippinene), Eurasia (Tyrkia)
    • Hva er de største utfordringene for CTO-er og CIO-er?
    • The Codest
    • The Codest
    • The Codest
    • Retningslinjer for personver
    • Vilkår for bruk av nettstedet

    Opphavsrett © 2025 av The Codest. Alle rettigheter forbeholdt.

    nb_NONorwegian
    en_USEnglish de_DEGerman sv_SESwedish da_DKDanish fiFinnish fr_FRFrench pl_PLPolish arArabic it_ITItalian jaJapanese ko_KRKorean es_ESSpanish nl_NLDutch etEstonian elGreek nb_NONorwegian