window.pipedriveLeadboosterConfig = { basis: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', versie: 2, } ;(functie () { var w = venster als (w.LeadBooster) { console.warn('LeadBooster bestaat al') } anders { w.LeadBooster = { q: [], on: functie (n, h) { this.q.push({ t: 'o', n: n, h: h }) }, trigger: functie (n) { this.q.push({ t: 't', n: n }) }, } } })() Beveiliging van webapps - XSS-kwetsbaarheid - The Codest
The Codest
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Industrie
    • Fintech & Bankieren
    • E-commerce
    • Adtech
    • Gezondheidstechnologie
    • Productie
    • Logistiek
    • Automotive
    • IOT
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
  • Over ons
  • Diensten
    • Software Ontwikkeling
      • Frontend ontwikkeling
      • Backend ontwikkeling
    • Staff Augmentation
      • Frontend ontwikkelaars
      • Backend ontwikkelaars
      • Gegevensingenieurs
      • Cloud Ingenieurs
      • QA ingenieurs
      • Andere
    • Het advies
      • Audit & Consulting
  • Waarde voor
    • CEO
    • CTO
    • Leveringsmanager
  • Ons team
  • Case Studies
  • Weten hoe
    • Blog
    • Ontmoetingen
    • Webinars
    • Bronnen
Carrière Neem contact op
Pijl terug KEREN TERUG
2021-04-16
Software Ontwikkeling

Beveiliging van webapps - XSS-kwetsbaarheid

Lukasz Kolko

XSS-aanvallen stellen aanvallers in staat om client-side scripts te injecteren in webpagina's die door andere gebruikers worden bekeken. De belangrijkste gevolgen van deze kwetsbaarheid zijn de mogelijkheid om acties uit te voeren in de context van de ingelogde gebruiker en het lezen van gegevens in de context van de ingelogde gebruiker.

Aanvalsscenario

  1. De aanvaller lokaliseert de XSS-kwetsbaarheid op een website die door het slachtoffer wordt gebruikt, bijvoorbeeld de website van een bank.
  2. Het slachtoffer is momenteel aangemeld op deze pagina
  3. De aanvaller stuurt het slachtoffer een vervalste URL
  4. Het slachtoffer klikt op de URL
  5. Op het slachtoffer bank website, JavaScript code begint uit te voeren om de gegevens van de gebruiker te onderscheppen of namens hem een overdracht uit te voeren naar de rekening van de aanvaller

Het is de moeite waard om op te merken dat bewerkingen die worden uitgevoerd namens het slachtoffer onzichtbaar kunnen zijn voor het slachtoffer, omdat ze op de achtergrond kunnen plaatsvinden met behulp van de API van de bank, of de aanvaller kan ze later uitvoeren met de gegevens die nodig zijn voor authenticatie, tokens, cookies, enz.

XSS-types

1. Gereflecteerde XSS

Dit is er een waarbij HTML/JavaScript-code in een parameter (bijv. GET, POST of cookie) wordt weergegeven in het antwoord.

Een pagina met een tekstinvoer om iets te zoeken die de parameter zoeken=eten in het URL-einde wanneer de API wordt opgevraagd. Na het invoeren van een zin, als deze niet wordt gevonden, wordt een retourbericht geplaatst in HTML ex.

<div>Geen resultaat gevonden voor <b>foo</b></div>

We kunnen proberen de URL in te voeren zoeken=..

2.DOM XSS

Dit is wanneer de uitvoering ervan wordt ingeschakeld door het gebruik van gevaarlijke functies in JavaScript, zoals `eval` of `innerHtml`. Het "Live voorbeeld" hieronder toont een DOM XSS-aanval gebaseerd op de `innerHtml` functie.

3. Opgeslagen XSS

Hier wordt de kwaadaardige code aan de serverkant geschreven. We kunnen bijvoorbeeld een commentaar met kwaadaardige code naar een blogpost sturen die naar de server wordt geüpload. De taak is om bijvoorbeeld te wachten op de moderatie van de beheerder en dan zijn sessiegegevens te stelen, enz.

Injectiemethoden

1. In de tag-inhoud

`onerror=waarschuwing('XSS')`in

<img src onerror="alert('XSS')" />

2. In de inhoud van het attribuut

`" onmouseover=waarschuwing('XSS')` in

<div class="" onmouseover="alert('XSS')""></div>

  1. In de inhoud van het attribuut zonder de aanhalingstekens

x onclick=waarschuwing('XSS')in

<div class="x" onclick="alert('XSS')"></div>

  1. In de hrefef eigenschap

javascript:waarschuwing('XSS') in

<a href="javascript:alert('XSS')"></a>

  1. In de string binnen JavaScript code

";Waarschuwing('XSS')// in

  1. In het kenmerk met de JavaScript-gebeurtenis

');waarschuwing('XSS')// waarbij ' een enkel aanhalingsteken is, in

<div onclick="change('&#39;);alert('XSS')//')">John</div>

  1. In de href attribuut binnen het JavaScript protocol

);alert(1)// waarbij %27 een enkel aanhalingsteken is, in

<a href="javascript:change('');alert(1)//')">klik op</a>


Live voorbeeld

Verdedigingsmethoden

  1. Gegevenscodering met behulp van ingebouwde functies die in veel programmeertalen.
  2. Sjabloonsystemen met automatische codering gebruiken. De meeste populaire frameworks die dergelijke systemen gebruiken, beschermen ons tegen XSS-injectie (Django, Templates, Vue, React enz.).
  3. Gebruik geen functies zoals eval of Functie met niet-vertrouwde gebruikersgegevens.
  4. Gebruik geen functies en eigenschappen die HTML-code rechtstreeks aan de DOM-boomelementen toewijzen, bijv, innerHTML, outerHTML, insertAdjacentHTML, ocument.write. In plaats daarvan kun je functies gebruiken die tekst direct aan deze elementen toewijzen, zoals tekstinhoud of innerText.
  5. Wees voorzichtig wanneer je de gebruiker doorverwijst naar een URL die onder zijn controle staat. Risico van injectie locatie = 'javascript('XSS')'.
  6. HTML filteren met bibliotheken zoals DOMPurify.
  7. Wees voorzichtig met uploaden .html of .svg bestanden. Je kunt een apart domein aanmaken van waaruit de geüploade bestanden worden geserveerd.
  8. Gebruik de Inhoud-beveiligingsbeleid mechanisme.
  9. Kijk eens naar de anti-XSS filters die in de meeste populaire browsers zijn ingebouwd.

    Als je dit artikel interessant vindt, volg Lukasz dan op Github: https://github.com/twistezo

Lees meer:

Strategieën voor het ophalen van gegevens in NextJS

Rails API & CORS. Een vleugje bewustzijn

Waarom je (waarschijnlijk) Typescript zou moeten gebruiken?

Verwante artikelen

Software Ontwikkeling

Bouw Toekomstbestendige Web Apps: Inzichten van The Codest's Expert Team

Ontdek hoe The Codest uitblinkt in het creëren van schaalbare, interactieve webapplicaties met geavanceerde technologieën, het leveren van naadloze gebruikerservaringen op alle platforms. Ontdek hoe onze expertise digitale transformatie en business...

DE BESTE
Software Ontwikkeling

Top 10 in Letland gevestigde bedrijven voor softwareontwikkeling

Lees meer over de beste softwareontwikkelingsbedrijven van Letland en hun innovatieve oplossingen in ons nieuwste artikel. Ontdek hoe deze technologieleiders uw bedrijf kunnen helpen verbeteren.

thecodest
Oplossingen voor ondernemingen en schaalvergroting

Essentiële Java-softwareontwikkeling: Een gids voor succesvol uitbesteden

Verken deze essentiële gids over succesvolle outsourcing Java-softwareontwikkeling om de efficiëntie te verbeteren, toegang te krijgen tot expertise en projectsucces te stimuleren met The Codest.

thecodest
Software Ontwikkeling

De ultieme gids voor outsourcing in Polen

De sterke groei van outsourcing in Polen wordt gedreven door economische, educatieve en technologische vooruitgang, die IT-groei en een bedrijfsvriendelijk klimaat stimuleert.

DeCodest
Oplossingen voor ondernemingen en schaalvergroting

De complete gids voor IT-auditmiddelen en -technieken

IT-audits zorgen voor veilige, efficiënte en compliant systemen. Lees het volledige artikel om meer te weten te komen over het belang ervan.

The Codest
Jakub Jakubowicz CTO & medeoprichter

Abonneer je op onze kennisbank en blijf op de hoogte van de expertise uit de IT-sector.

    Over ons

    The Codest - Internationaal softwareontwikkelingsbedrijf met technische hubs in Polen.

    Verenigd Koninkrijk - Hoofdkantoor

    • Kantoor 303B, 182-184 High Street North E6 2JA
      Londen, Engeland

    Polen - Lokale technologieknooppunten

    • Fabryczna kantorenpark, Aleja
      Pokoju 18, 31-564 Krakau
    • Hersenambassade, Konstruktorska
      11, 02-673 Warschau, Polen

      The Codest

    • Home
    • Over ons
    • Diensten
    • Case Studies
    • Weten hoe
    • Carrière
    • Woordenboek

      Diensten

    • Het advies
    • Software Ontwikkeling
    • Backend ontwikkeling
    • Frontend ontwikkeling
    • Staff Augmentation
    • Backend ontwikkelaars
    • Cloud Ingenieurs
    • Gegevensingenieurs
    • Andere
    • QA ingenieurs

      Bronnen

    • Feiten en fabels over samenwerken met een externe partner voor softwareontwikkeling
    • Van de VS naar Europa: Waarom Amerikaanse startups besluiten naar Europa te verhuizen
    • Tech Offshore Ontwikkelingshubs Vergelijking: Tech Offshore Europa (Polen), ASEAN (Filippijnen), Eurazië (Turkije)
    • Wat zijn de grootste uitdagingen voor CTO's en CIO's?
    • The Codest
    • The Codest
    • The Codest
    • Privacy policy
    • Gebruiksvoorwaarden website

    Copyright © 2025 door The Codest. Alle rechten voorbehouden.

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