Frage:
Warum betrifft XSS so viele Websites?
Ishan Mathur
2016-07-07 16:23:04 UTC
view on stackexchange narkive permalink

Laut einem Artikel, den ich gelesen habe, leiden 65% aller Websites weltweit unter XSS. Warum können Entwickler es nicht finden und beheben?

Bitte helfen Sie mir zu verstehen. Ich habe keinen Sicherheits- oder technischen Hintergrund.

Wenn dies als eine weitere [berühmte Frage] endet (https://security.stackexchange.com/questions/128412/sql-injection-is-17-years-old-why-is-it-still-around?lq=1), Ich nenne Dibs für den Rest der ** Warum gibt es `X` noch ** Serie ...
Eine weitere Bemerkung: XSS ist immer noch weit verbreitet, da eine XSS-Sicherheitsanfälligkeit nicht so sehr schadet wie andere Sicherheitsanfälligkeiten.
Ich habe es einmal gesagt und ich werde es noch einmal sagen, mangelndes Bewusstsein.Ich habe einmal mit einem Entwickler mit mehr als 10 Jahren Erfahrung in der Webentwicklung gesprochen, der noch nie von XSS gehört hatte.
@Jedi Warum gibt es noch Fragen zu "x"?
Genau wie bei der SQL-Injection und ähnlichen Sicherheitslücken dreht sich alles um Dummheit und Leute, die sich "Entwickler" nennen, wenn sie in Wirklichkeit nicht einmal in der Nähe eines Computers sein dürfen.
@AndréBorie Wenn Sie mit "Dummheit" "Ignoranz" meinen, dann kann ich dem zustimmen, aber wie hat das etwas mit Leuten zu tun, die sich "Entwickler" nennen oder: Ingenieur, Programmierer, Programmierer, Architekt, sr.professioneller E-Mailer, Kundenbetreuer, Vorwand harter Arbeit, Verfasser von Unit-Tests, außergewöhnlicher Build Breaker, Meeting-Ingenieur, Legacy-Code-Betreuer, Browser der Websites, Korrektor falscher Personen im Internet;für diese Angelegenheit?
@Jedi, Die Frage, auf die Sie sich beziehen, wurde vom selben Autor wie dieser gestellt.Dies ließ mich überlegen, ob dies ein kluger Versuch ist, Besucher auf die Website (Werbung) zu bringen, die in beiden Fragen erwähnt wird.
zwei Wörter: Abwärtskompatibilität.Trotzdem glaube ich nicht, dass 65% aller Websites Benutzereingaben akzeptieren, zumal Kommentare jetzt ausgelagert sind.Ein einfacher CSP stoppt XSS in seinen Spuren. Wenn Sie also die Einsendungen anderer anzeigen, stellen Sie sicher, dass Sie einen http-Header für Inhaltssicherheitsrichtlinien verwenden.
Machst du Witze?Sie haben bereits eine schreckliche Frage gestellt, die viele positive Stimmen hervorgerufen hat, und jetzt kommen Sie wieder.Warten auf Ihre nächste Frage: Laut X haben viele Leute schlechte Passwörter. Helfen Sie mir zu verstehen, warum.Laut X speichern viele Leute Passwörter im Klartext.Warum?
@RoryAlsop und keine Überraschung, dass Sie nach einer schlechten Frage viele der gleichen nutzlosen Fragen erhalten.Ich warte immer noch auf meine ultimative Frage: "Laut X schreiben die Leute immer noch Programme mit Fehlern. Ich bin kein Techniker, also kann mir jemand erklären, warum Entwickler nicht einfach lernen können, wie man keine Fehler macht."
@VL-80 hat er 3 Fragen gestellt und alle verweisen auf diese Website.Irgendwas stimmt sicherlich nicht
@AndréBorie Unerfahrenheit! == Dummheit.Unwissenheit! == Dummheit.Helfen wir ihnen, anstatt sie zu nennen.Dafür ist diese Seite schließlich da.
@jammypeach, vorausgesetzt, sie möchten tatsächlich geholfen werden.
@AndréBorie Wenn sie hier sind und dies lesen, dann würde ich sagen, dass sie es wahrscheinlich tun.
@jammypeach Leider bezweifle ich, dass die Leute, über die wir sprechen, dies lesen.Ich denke eher, dass sie eine weitere verletzliche und schreckliche App erstellen, indem sie "Wie mache ich PHP" googeln und den ersten, veralteten Link verwenden, anstatt die richtige Dokumentation zu lesen.
@IshanMathur - Sie lügen: https://www.linkedin.com/in/ishanmathur Sie *** WROTE *** den Artikel.
Sieben antworten:
Steffen Ullrich
2016-07-07 16:54:36 UTC
view on stackexchange narkive permalink

XSS ist eine Form der Code-Injektion, d. h. der Angreifer schafft es, seinen eigenen Schadcode (normalerweise JavaScript) in vertrauenswürdigen Code (HTML, CSS, JavaScript) zu injizieren, der von der Site bereitgestellt wird. Es ist SQLi insofern ähnlich, als es durch dynamisch aufgebauten Code verursacht wird, dh SQL-Anweisungen, HTML-Seiten usw.

Es gibt jedoch etablierte Techniken zum Lösen von SQLi (dh Parameter verwenden) Bindung) ist es mit XSS noch schwieriger. Um sich gegen XSS zu verteidigen, muss jede benutzergesteuerte Eingabe ordnungsgemäß maskiert werden, was viel schwieriger ist als es sich anhört:

  • Escape-Regeln hängen vom Kontext ab, dh HTML, HTML-Attribut, XHTML, URL, Skript, CSS-Kontexte haben alle unterschiedliche Escape-Regeln.
  • Diese Kontexte können verschachtelt sein, dh <a href = javascript: XXX > ist ein JavaScript-Kontext in einem URL-Kontext innerhalb eines HTML-Attributs
  • Darüber hinaus haben Sie Codierungsregeln für Zeichen (UTF-8, UTF-7, latin1, ...), die wiederum kontextspezifisch sein können.
  • Der Kontext und Die Codierung muss beim Erstellen der Ausgabe bekannt sein: Während die meisten Template-Engines die ordnungsgemäße HTML-Escape-Funktion unterstützen, kennen sie den umgebenden Kontext häufig nicht und können daher die kontextspezifischen Escape-Regeln nicht anwenden.
  • Darüber hinaus können Browser dies Verhalten Sie sich in Bezug auf Escape- oder Codierung etwas anders.
  • Abgesehen davon finden Sie häufig in gewachsenem Code ohne ordnungsgemäße Trennung von Logik und PR Es wird angegeben, dass HTML-Fragmente in der Datenbank gespeichert werden und dem Entwickler nicht immer klar ist, ob ein bestimmter Wert bereits HTML-sauber ist oder maskiert werden muss.

Und es gibt einige einfache Möglichkeiten Zum Schutz vor XSS durch Design (insbesondere Content-Security-Policy) funktionieren diese nur mit den neuesten Browsern, müssen vom Entwickler explizit aktiviert werden und sind häufig erst nach großen (und teuren) Änderungen am Code (wie dem Entfernen von Inline-Skripten) wirksam. .

Trotzdem besteht eine gute Chance, es richtig zu machen, wenn Sie Entwickler mit den richtigen Kenntnissen haben und mit modernen Toolkits, die sich bereits um XSS kümmern, von vorne anfangen können. Leider gibt es in vielen Fällen Legacy-Code, an dem nur weiter gearbeitet werden muss. Und die Entwicklung wird normalerweise von Entwicklern durchgeführt, die XSS überhaupt nicht kennen oder nicht alle Fallstricke kennen.

Und solange die Webentwicklung in Umgebungen durchgeführt wird, die sehr kosten- und zeitempfindlich sind, ist die Wahrscheinlichkeit gering, dass sich dies ändert. Ziel in dieser Umgebung ist es, dass der Code in kurzer Zeit und mit geringen Kosten überhaupt funktioniert. Unternehmen konkurrieren normalerweise nach Funktionen und Markteinführungszeit und nicht nach dem sichersten Produkt. Und XSS-Schutz bedeutet derzeit nur zusätzliche Kosten ohne offensichtlichen Nutzen für viele Manager.

Können Sie nicht dieselbe Codierung (`<>" '& `für die entsprechenden Entitäten) für HTML, HTML-Attribute und XHTML verwenden?
@CodesInChaos: Wenn Sie einen reinen (X) HTML-Kontext haben, sollte dies in Ordnung sein.Es gibt jedoch geringfügige Unterschiede im Javascript-Kontext im HTML- und XHTML-Kontext.Versuchen Sie `
Loading...