window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(funktion () { var w = vindue if (w.LeadBooster) { console.warn('LeadBooster findes 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-sikkerhed i populære Javascript-biblioteker. Bør jeg stadig være bekymret? - The Codest
Codest
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Industrier
    • Fintech og bankvirksomhed
    • E-commerce
    • Adtech
    • Sundhedsteknologi
    • Produktion
    • Logistik
    • Biler
    • IOT
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
  • Om os
  • Serviceydelser
    • Udvikling af software
      • Frontend-udvikling
      • Backend-udvikling
    • Staff Augmentation
      • Frontend-udviklere
      • Backend-udviklere
      • Dataingeniører
      • Cloud-ingeniører
      • QA-ingeniører
      • Andet
    • Det rådgivende
      • Revision og rådgivning
  • Værdi for
    • ADMINISTRERENDE DIREKTØR
    • CTO
    • Leder af levering
  • Vores team
  • Casestudier
  • Ved hvordan
    • Blog
    • Møder
    • Webinarer
    • Ressourcer
Karriere Tag kontakt til os
Pil tilbage GÅ TILBAGE
2019-08-26
Udvikling af software

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

Daniel Grek

Når det gælder de mest populære Javascript-biblioteker, må man indrømme, at der i deres udviklingshistorie (9, 6 og 5 år for henholdsvis Angular, React og Vue) er sket mange gode ting med hensyn til sikkerhed, især i forbindelse med sårbarhed over for XSS-angreb. Denne artikel vil dog diskutere de små fælder og principper, som udviklere stadig bør være opmærksomme på.

XSS

Vi lever i en tid med frameworks, ikke sprog. Det betyder, at programmører bør være i stand til at bekymre sig mindre om mange aspekter af udviklingen, herunder sikkerhed. Størstedelen af de nuværende backend-frameworks implementerer sikkerhedsmoduler, som bliver testet af eksterne, specialiserede virksomheder og store organisationer. Det er derfor, faldende sikkerhedsbevidsthed kan være tydelig, for eksempel mellem unge programmører, som tager mere ansvar for produkterne, især med hensyn til freelancearbejde.

Et af de mest almindelige angreb på applikationens klientside er XSS (Cross-Site Scripting). Det udføres ved at injicere kørbare scripts på klientsiden i webapplikationer [1] og bruger implementerede HTML-renderingsmetoder eller Javascript Kode evaluatorer, der udfører den. XSS er relativt lukrativt, da der kan indsamles mange forskellige data, herunder sessionscookies eller brugerdata, og det kan installere et sporingsprogram som f.eks. en keylogger, hvilket gør det farligt for både brugere og virksomhedsejere. Nogle gange udføres der andre former for angreb for at tillade XSS på siden, f.eks. SQL-indsprøjtning.

Eksempel

Login-formularen på siden gengiver loginName-parameteren, der sendes i GET-anmodningen, i login-navnets input. Værdien behandles ikke af hverken server- eller klientsiden af applikationen. Ved at anmode: http://localhost:8080/login?name=<script>alert(document.cookies)</script>
kode udføres, og data eksponeres

Dette er et eksempel på en Reflekteret XSS-angrebhvor scripts indsprøjtes via en særligt forberedt URL-adresse, der sendes til offeret og afspejles i serverens svar. Andre kendte populære former for angreb er som følger:

  • Gemt XSS udføres med injicerede data, der er gemt på serversiden, normalt ved hjælp af formularer, der er tilgængelige i applikationen. Klientprogrammet gengiver kode, der f.eks. er gemt i en database.
  • DOM XSS udfører et XSS-angreb uden brug af serversiden. I den næste del af artiklen vil vi fokusere på denne form for angreb.

Aktuelle sårbarheder i React- og Vue-bibliotekerne

For de nuværende React/Vue-versioner er der fundet to store problemer, som endnu ikke er officielt løst. Den første sårbarhed har samme karakter for alle rammer og er relateret til metoder, der tillader rendering af rå HTML i skabeloner: v-html og farligtSetInnerHTML, henholdsvis for Vue og React. Hver dokumentation [2] informerer læserne om, at uklog brug kan udsætte brugerne for XSS-angreb. Hvis der ikke er andre muligheder for at løse problemet, skal du sikre dig, at dataene er filtreret og undsluppet. Selvom de er farlige, skal du ikke forvente, at disse metoder bliver rettet. Brug dem på egen risiko.

I første kvartal af 2018 blev der opdaget en stor fejl i React, som muliggjorde direkte udførelse af kode ved at indstille egenskaben for tag-elementet. Overførsel af eksempelkode inden for attributter, såsom javascript:alert(1) og at køre et gengivet link vil udføre koden. Dette problem [4] er stadig åbent, og der er ikke udarbejdet og flettet nogen løsning, så sørg for, at din kode er sikker. Eksempler foreslået i den officielle diskussion foreslår nogle måder at overvinde dette problem på.

Hvis det ikke er muligt at opdatere til de nyeste versioner, skal du sørge for, at gamle problemer ikke skaber problemer for dig ved at sikre, at din kode ikke er udsat for:

  • barn Knudepunkt Indsprøjtning - React, brug af React.createElement [5]
  • Rendering på serversiden - React/Vue [6]
  • CSS-indsprøjtning [8]

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

Glem ikke, at ud over selve frameworket eller bibliotekerne har Javascript som sprog nogle farlige funktioner, som skal undgås eller bruges med forsigtighed. De er generelt relateret til DOM-manipulation eller script-eksekvering. eval() repræsenterer flagskibsfunktioner af denne art og er ekstremt farlig, fordi den udfører given stringificeret kode direkte [9]. Tag også et bedre kig på din kode, når du finder en af disse funktioner:

  • dokument.skriv
  • document.writeln
  • (element).innerHTML
  • (element).outerHTML
  • (element).insertAdjacentHTML

Her kan det være nyttigt at bruge linters med et ordentligt regelsæt til at finde sådanne sårbare punkter. Der findes også masser af åbne eller kommercielle kodeanalysatorer, som kan hjælpe dig med at opdage sikkerhedshuller i udviklet kode.

Uanset hvilket bibliotek/framework der vælges, skal vi stadig huske de grundlæggende principper for front-end-udvikling. For det første skal du altid sikre dig, at den eksterne kode, du indsætter, kommer fra en pålidelig kilde. Revision dine afhængigheder, og vælg dem med omhu. Nogle kan indeholde alvorlige sårbarheder, som kan afsløre din kode, selv om alt er i orden med selve koden. Du kan læse mere om afhængigheders sikkerhed her:

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

Så ... bør du stadig være bekymret?

Ja - og jeg vil på det kraftigste opfordre alle til aldrig at stole på eksterne biblioteker eller sig selv, når det gælder sikkerhed. Uanset hvor sikker du forventer, at din software er, skal du altid gøre en indsats for at teste den så meget som muligt med hensyn til almindelige angrebsformer [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!

Læs mere om det:

5 fejl, du bør undgå, når du vedligeholder et projekt i PHP

PHP udvikling. Symfony-konsolkomponent - tips og tricks

Hvorfor har vi brug for Symfony Polyfill (... og hvorfor vi ikke bør)

Relaterede artikler

Udvikling af software

Byg fremtidssikrede webapps: Indsigt fra The Codest's ekspertteam

Oplev, hvordan The Codest udmærker sig ved at skabe skalerbare, interaktive webapplikationer med banebrydende teknologier, der leverer sømløse brugeroplevelser på tværs af alle platforme. Lær, hvordan vores ekspertise driver digital transformation og...

DENKODEST
Udvikling af software

Top 10 Letlands-baserede softwareudviklingsvirksomheder

Læs om Letlands bedste softwareudviklingsvirksomheder og deres innovative løsninger i vores seneste artikel. Find ud af, hvordan disse teknologiledere kan hjælpe med at løfte din virksomhed.

thecodest
Løsninger til virksomheder og scaleups

Grundlæggende om Java-softwareudvikling: En guide til succesfuld outsourcing

Udforsk denne vigtige guide til vellykket outsourcing af Java-softwareudvikling for at forbedre effektiviteten, få adgang til ekspertise og skabe projektsucces med The Codest.

thecodest
Udvikling af software

Den ultimative guide til outsourcing i Polen

Den voldsomme stigning i outsourcing i Polen er drevet af økonomiske, uddannelsesmæssige og teknologiske fremskridt, der fremmer it-vækst og et erhvervsvenligt klima.

TheCodest
Løsninger til virksomheder og scaleups

Den komplette guide til IT-revisionsværktøjer og -teknikker

IT-revisioner sikrer sikre, effektive og kompatible systemer. Lær mere om deres betydning ved at læse hele artiklen.

Codest
Jakub Jakubowicz CTO og medstifter

Tilmeld dig vores vidensbase, og hold dig opdateret om ekspertisen fra it-sektoren.

    Om os

    The Codest - International softwareudviklingsvirksomhed med tech-hubs i Polen.

    Storbritannien - Hovedkvarter

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

    Polen - Lokale teknologiske knudepunkter

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

      Codest

    • Hjem
    • Om os
    • Serviceydelser
    • Casestudier
    • Ved hvordan
    • Karriere
    • Ordbog

      Serviceydelser

    • Det rådgivende
    • Udvikling af software
    • Backend-udvikling
    • Frontend-udvikling
    • Staff Augmentation
    • Backend-udviklere
    • Cloud-ingeniører
    • Dataingeniører
    • Andet
    • QA-ingeniører

      Ressourcer

    • Fakta og myter om at samarbejde med en ekstern softwareudviklingspartner
    • Fra USA til Europa: Hvorfor beslutter amerikanske startups sig for at flytte til Europa?
    • Sammenligning af Tech Offshore-udviklingsknudepunkter: Tech Offshore Europa (Polen), ASEAN (Filippinerne), Eurasien (Tyrkiet)
    • Hvad er de største udfordringer for CTO'er og CIO'er?
    • Codest
    • Codest
    • Codest
    • Privacy policy
    • Vilkår for brug af hjemmesiden

    Copyright © 2025 af The Codest. Alle rettigheder forbeholdes.

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