window.pipedriveLeadboosterConfig = { base: 'leadbooster-chat.pipedrive.com', companyId: 11580370, playbookUuid: '22236db1-6d50-40c4-b48f-8b11262155be', version: 2, } ;(function () { var w = Fenster if (w.LeadBooster) { console.warn('LeadBooster existiert bereits') } 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-Sicherheit in beliebten Javascript-Bibliotheken. Sollte ich mir noch Sorgen machen? - The Codest
Der Codest
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Branchen
    • Fintech & Bankwesen
    • E-commerce
    • Adtech
    • Gesundheitstechnik
    • Herstellung
    • Logistik
    • Automobilindustrie
    • IOT
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
  • Über uns
  • Dienstleistungen
    • Software-Entwicklung
      • Frontend-Softwareentwicklung
      • Backend-Softwareentwicklung
    • Staff Augmentation
      • Frontend-Entwickler
      • Backend-Entwickler
      • Daten-Ingenieure
      • Cloud-Ingenieure
      • QS-Ingenieure
      • Andere
    • IT-Beratung
      • Prüfung und Beratung
  • Wert für
    • CEO
    • CTO
    • Delivery Manager
  • Unser Team
  • Fallstudien
  • Gewusst wie
    • Blog
    • Begegnungen
    • Webinare
    • Ressourcen
Karriere Kontakt aufnehmen
Pfeil zurück ZURÜCK
2019-08-26
Software-Entwicklung

XSS-Sicherheit in beliebten Javascript-Bibliotheken. Sollte ich mir noch Sorgen machen?

Daniel Grek

In Bezug auf die meisten populären Javascript-Bibliotheken muss man zugeben, dass sich in ihrer Entwicklungsgeschichte (9, 6 bzw. 5 Jahre für Angular, React und Vue) viel Gutes in Bezug auf die Sicherheit getan hat, insbesondere was die Anfälligkeit für XSS-Angriffe betrifft. In diesem Artikel werden jedoch die kleinen Fallen und Grundsätze erörtert, die Entwickler immer noch beachten sollten.

XSS

Wir leben im Zeitalter der Rahmenwerke, nicht der Sprachen. Das bedeutet, dass sich Programmierer um viele Aspekte der Entwicklung, einschließlich der Sicherheit, weniger Sorgen machen sollten. Die meisten der aktuellen Backend-Frameworks implementieren Sicherheitsmodule, die von externen, spezialisierten Unternehmen und großen Gesellschaften getestet werden. Deshalb, abnehmendes Sicherheitsbewusstsein könnte sich zum Beispiel zwischen jungen Programmierern zeigen, die mehr Verantwortung für die Produkte übernehmen, vor allem im Bereich der Freiberuflichkeit.

Einer der häufigsten Angriffe auf der Client-Seite der Anwendung ist XSS (Cross-Site Scripting). Es wird durch das Einschleusen von ausführbaren clientseitigen Skripten in Webanwendungen [1] durchgeführt und nutzt implementierte HTML-Rendering-Methoden oder Javascript Code Auswerter, die es ausführen. XSS ist relativ lukrativ, da viele verschiedene Daten gesammelt werden können, darunter Sitzungscookies oder Benutzerdaten, und es kann eine Tracking-Anwendung wie ein Keylogger installiert werden, was es sowohl für Benutzer als auch für Unternehmen gefährlich macht. Manchmal werden auch andere Formen von Angriffen durchgeführt, um XSS auf der Seite zu ermöglichen, wie z. B. SQL-Einschleusung.

Beispiel

Das Anmeldeformular auf der Seite gibt den in der GET-Anfrage gesendeten Parameter loginName in der Eingabe des Anmeldenamens wieder. Der Wert wird weder vom Server noch von der Client-Seite der Anwendung verarbeitet. Durch Anfrage: http://localhost:8080/login?name=<script>alert(document.cookies)</script>
Code wird ausgeführt und Daten werden offengelegt

Dies ist ein Beispiel für eine reflektierter XSS-Angriffbei denen Skripte über speziell vorbereitete URL-Adressen eingeschleust werden, die dem Opfer übermittelt und von der Serverantwort reflektiert werden. Andere bekannte und beliebte Formen von Angriffen sind die folgenden:

  • Gespeicherte XSS mit injizierten Daten, die auf der Serverseite gespeichert sind, in der Regel durch in der Anwendung verfügbare Formulare. Die Client-Anwendung rendert Code, der z. B. in einer Datenbank gespeichert ist.
  • DOM XSS führt einen XSS-Angriff durch, ohne die Serverseite zu nutzen. Im weiteren Teil des Artikels werden wir uns auf diese Form des Angriffs konzentrieren.

Aktuelle Sicherheitslücken in den Bibliotheken React und Vue

Für die aktuellen Versionen React/Vue wurden zwei größere Probleme entdeckt, die noch nicht offiziell behoben sind. Die erste Schwachstelle ist bei allen Frameworks gleich und hängt mit Methoden zusammen, die das Rendering von Roh-HTML in Vorlagen ermöglichen: v-html und dangerouslySetInnerHTML, jeweils für Vue und React. In den jeweiligen Dokumentationen [2] wird darauf hingewiesen, dass eine unvorsichtige Verwendung die Benutzer einem XSS-Angriff aussetzen kann. Wenn es keine anderen Möglichkeiten gibt, das Problem zu beheben, stellen Sie sicher, dass die Daten gefiltert und entkommen. Obwohl sie gefährlich sind, sollten Sie nicht erwarten, dass diese Methoden repariert werden. Verwenden Sie sie auf eigene Gefahr.

Im ersten Quartal 2018 wurde ein großer Fehler in React entdeckt, der die direkte Ausführung von Code durch Setzen der Eigenschaft für ein Tag-Element ermöglicht. Die Übergabe von Beispielcode innerhalb von Attributen, wie z. B. javascript:alert(1) und das Ausführen eines gerenderten Links wird den Code ausführen. Dieses Problem [4] ist immer noch offen und es wurde noch kein Fix vorbereitet und zusammengeführt, also stellen Sie sicher, dass Ihr Code sicher ist. Die in der offiziellen Diskussion vorgeschlagenen Beispiele bieten einige Möglichkeiten, dieses Problem zu lösen.

Wenn eine Aktualisierung auf die neuesten Versionen nicht möglich ist, sollten Sie sicherstellen, dass alte Probleme nicht zu Problemen führen, indem Sie dafür sorgen, dass Ihr Code nicht offengelegt wird:

  • Kind Knoten Einspritzung - React, Verwendung von React.createElement [5]
  • serverseitiges Rendering - React/Vue [6]
  • CSS-Injektion [8]

Es geht immer noch um Javascript. Es geht immer noch um Front-End

Vergessen Sie nicht, dass Javascript als Sprache neben den Frameworks oder Bibliotheken selbst auch einige gefährliche Funktionen hat, die vermieden oder mit Vorsicht verwendet werden müssen. Sie stehen im Allgemeinen im Zusammenhang mit der DOM-Manipulation oder der Ausführung von Skripten. eval() repräsentiert Flaggschiff-Funktionen dieser Art und ist extrem gefährlich, da sie gegebenen stringifizierten Code direkt ausführt [9]. Schauen Sie sich also Ihren Code besser an, wenn Sie eine dieser Funktionen finden:

  • Dokument.schreiben
  • document.writeln
  • (Element).innerHTML
  • (Element).outerHTML
  • (Element).insertAdjacentHTML

Hier kann die Verwendung von Linters mit einem geeigneten Regelwerk hilfreich sein, um solche Schwachstellen zu finden. Es gibt auch viele offene oder kommerzielle Code-Analysatoren, die Ihnen helfen können, Sicherheitslücken in entwickeltem Code zu entdecken.

Unabhängig von der Wahl der Bibliothek/des Frameworks müssen wir uns an grundlegende Prinzipien der Front-End-Entwicklung erinnern. Erstens: Stellen Sie immer sicher, dass der externe Code, den Sie einfügen, aus einer vertrauenswürdigen Quelle stammt. Prüfung Ihre Abhängigkeiten, und wählen Sie sie mit Bedacht aus. Einige können schwerwiegende Sicherheitslücken enthalten, die Ihren Code angreifbar machen, auch wenn mit dem Code selbst alles in Ordnung ist. Mehr über die Sicherheit von Abhängigkeiten können Sie hier lesen:

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

Sollten Sie sich also immer noch Sorgen machen?

Ja - und ich empfehle jedem, sich in puncto Sicherheit niemals auf externe Bibliotheken oder sich selbst zu verlassen. Egal, wie sicher Sie Ihre Software einschätzen, bemühen Sie sich immer, sie so weit wie möglich auf gängige Angriffsformen hin zu testen [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!

Lesen Sie mehr:

5 Fehler, die Sie bei der Pflege eines Projekts in PHP vermeiden sollten

PHP Entwicklung. Symfony Konsolenkomponente - Tipps & Tricks

Warum brauchen wir Symfony Polyfill (... und warum wir es nicht brauchen)

Ähnliche Artikel

Software-Entwicklung

Zukunftssichere Web-Apps bauen: Einblicke vom The Codest-Expertenteam

Entdecken Sie, wie sich The Codest bei der Erstellung skalierbarer, interaktiver Webanwendungen mit Spitzentechnologien auszeichnet, die nahtlose Benutzererfahrungen auf allen Plattformen bieten. Erfahren Sie, wie unsere Expertise die digitale Transformation und...

DAS SCHÖNSTE
Software-Entwicklung

Top 10 Softwareentwicklungsunternehmen in Lettland

Erfahren Sie in unserem neuesten Artikel mehr über die besten Softwareentwicklungsunternehmen Lettlands und ihre innovativen Lösungen. Entdecken Sie, wie diese Technologieführer Ihr Unternehmen voranbringen können.

thecodest
Enterprise & Scaleups Lösungen

Grundlagen der Java-Softwareentwicklung: Ein Leitfaden für erfolgreiches Outsourcing

Entdecken Sie diesen wichtigen Leitfaden zum erfolgreichen Outsourcing der Java-Softwareentwicklung, um die Effizienz zu steigern, auf Fachwissen zuzugreifen und den Projekterfolg mit The Codest voranzutreiben.

thecodest
Software-Entwicklung

Der ultimative Leitfaden für Outsourcing in Polen

Der Anstieg des Outsourcings in Polen wird durch wirtschaftliche, bildungspolitische und technologische Fortschritte angetrieben, die das IT-Wachstum und ein unternehmensfreundliches Klima fördern.

TheCodest
Enterprise & Scaleups Lösungen

Der vollständige Leitfaden für IT-Audit-Tools und -Techniken

IT-Audits gewährleisten sichere, effiziente und gesetzeskonforme Systeme. Erfahren Sie mehr über ihre Bedeutung, indem Sie den vollständigen Artikel lesen.

Der Codest
Jakub Jakubowicz CTO & Mitbegründer

Abonnieren Sie unsere Wissensdatenbank und bleiben Sie auf dem Laufenden über das Fachwissen aus dem IT-Sektor.

    Über uns

    The Codest - Internationales Software-Unternehmen mit technischen Zentren in Polen.

    Vereinigtes Königreich - Hauptsitz

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

    Polen - Lokale Tech-Hubs

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

      Der Codest

    • Startseite
    • Über uns
    • Dienstleistungen
    • Fallstudien
    • Gewusst wie
    • Karriere
    • Wörterbuch

      Dienstleistungen

    • IT-Beratung
    • Software-Entwicklung
    • Backend-Softwareentwicklung
    • Frontend-Softwareentwicklung
    • Staff Augmentation
    • Backend-Entwickler
    • Cloud-Ingenieure
    • Daten-Ingenieure
    • Andere
    • QS-Ingenieure

      Ressourcen

    • Fakten und Mythen über die Zusammenarbeit mit einem externen Softwareentwicklungspartner
    • Aus den USA nach Europa: Warum entscheiden sich amerikanische Start-ups für eine Verlagerung nach Europa?
    • Tech Offshore Development Hubs im Vergleich: Tech Offshore Europa (Polen), ASEAN (Philippinen), Eurasien (Türkei)
    • Was sind die größten Herausforderungen für CTOs und CIOs?
    • Der Codest
    • Der Codest
    • Der Codest
    • Privacy policy
    • Website terms of use

    Urheberrecht © 2025 von The Codest. Alle Rechte vorbehalten.

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