Frage:
Ist XSS eine serverseitige oder clientseitige Sicherheitsanfälligkeit?
caramba
2014-11-26 20:35:28 UTC
view on stackexchange narkive permalink

Meine Kollegen behaupten, dass XSS eine Sicherheitslücke auf der Serverseite ist. Ich habe immer gedacht, dass dies eine clientseitige Sicherheitslücke ist. Wer von uns ist richtig und warum?

Wie wäre es mit Peer-to-Peer-Verbindungen, bei denen XSS eingeführt wird?Also definitiv clientseitige Schwachstelle.
Neun antworten:
Xander
2014-11-26 20:46:16 UTC
view on stackexchange narkive permalink

Bei einem Cross-Site-Scripting-Angriff wird das schädliche Skript auf dem Client ausgeführt, der eigentliche Fehler liegt jedoch in der Anwendung. Dies bedeutet nicht unbedingt, dass es sich um eine streng serverseitige Sicherheitsanfälligkeit handelt, da der Fehler im JavaScript der Anwendung liegen kann. Im Allgemeinen handelt es sich jedoch tatsächlich um serverseitigen Code und immer um Code, der vom Server bereitgestellt wird.

Es gibt clientseitige Abhilfemaßnahmen, z. B. den XSS-Schutz, der jetzt in den wichtigsten Browsern integriert ist, oder Plugins, die die Ausführung von JavaScript verhindern. Letztendlich ist XSS jedoch eine Sicherheitsanfälligkeit für Webanwendungen und muss dies auch sein von den Anwendungsentwicklern behoben.

Ich sollte erwähnen, dass es eine andere Form von XSS gibt, die weder Fehler im Client (dem Browser) noch Fehler im Server (der Anwendung) ausnutzt, sondern Fehler im Benutzer. Dies wird oft als Self-XSS bezeichnet und nutzt die Bereitschaft eines unfähigen Benutzers aus, JavaScript auszuführen, das er aus dem Internet in die Entwicklertools-Konsole seines Browsers kopiert und eingefügt hat, und zwar ausschließlich auf der Grundlage des Versprechens, dass dies trotz aller Hoffnung auf magische Weise möglich ist er soll die Facebook-Beiträge seiner Ex-Freundin lesen, obwohl sie ihn nicht befreundet und blockiert hat.

Ich wusste nicht, dass der letzte auch "Self-XSS" genannt wurde. Bis jetzt habe ich es "Dummheit" genannt.
@BiAiB Ich hasse den Begriff "Self-XSS". Ich [einmal vorgeschlagen, es zu ändern] (http://chat.stackexchange.com/transcript/151?m=15557281#15557281) zu etwas ähnlichem wie Ihrem, aber wesentlich weniger prägnant. :-)
Das Installieren einer unsicheren Browsererweiterung kann als "selbstverschuldetes" XSS angesehen werden.
Fast perfekte Antwort, aber es enthält einen falschen Satz, der behoben werden muss: "Der Fehler ... ist immer in dem Code enthalten, der vom Server geliefert wird."In DOM-basiertem XSS können Sie eine Technik verwenden, bei der der Schadcode nicht vom Server stammt: "Die Technik zum Vermeiden des Sendens der Nutzdaten an den Server hängt von der Tatsache ab, dass URI-Fragmente (der Teil im URI nach dem" #”) Wird vom Browser nicht an den Server gesendet. Daher kann jeder clientseitige Code, der beispielsweise auf document.location verweist, für einen Angriff anfällig sein, bei dem Fragmente" https://owasp.org/www-community/attacks "verwendet werden/ DOM_Based_XSS
user1720897
2014-11-26 21:08:56 UTC
view on stackexchange narkive permalink

Es manifestiert sich auf der Clientseite, aber das liegt daran, dass die Webanwendung dies zulässt. Die Anwendung überprüft den Code, den sie an den Browser zurücksendet, nicht. Und deshalb handelt es sich um eine serverseitige Sicherheitslücke. Denken Sie so darüber nach. Was würden Sie tun, um das Problem mit XSS zu beheben? Den serverseitigen Code korrigieren oder den Browser reparieren?

Weißt du, das ist eigentlich eine gute Frage.Sollte ich alle Eingaben auf der Client- oder der Serverseite bereinigen?Angenommen, ich fülle Text mit AJAX aus.Soll ich nun die Dateien bereitstellen, die XSS-verhindert sind, oder sollte ich sie normal bereitstellen und dann XSS auf der Clientseite entfernen?Was sind die Sicherheitsauswirkungen jedes Ansatzes?
Was auch immer auf der Client-Seite passiert, liegt nicht in Ihrer Kontrolle.Sie haben jedoch die Kontrolle darüber, was auf der Serverseite passiert.
Natürlich hast du die Kontrolle.Ich glaube nicht, dass Sie meine Frage richtig verstanden haben.Ich sehe zwei Möglichkeiten, dies zu erreichen: 1. Daten werden aus der Datenbank entnommen -> Server liefert Inhalt an Client -> Daten werden nicht XSS-fähig -> Daten werden im DOM ausgefüllt. 2. Daten werden aus der Datenbank entnommen -> Die Daten sind nicht XSSed -> Der Server stellt dem Client den nicht XSSed-Inhalt zur Verfügung -> Der Client füllt die Daten in das DOM. Ich wollte nur die Sicherheitsauswirkungen jedes Ansatzes kennen.
Kevin Hakanson
2014-11-26 21:27:58 UTC
view on stackexchange narkive permalink

XSS-Angriffe (Cross-Site Scripting) können im Allgemeinen als eine der folgenden Kategorien eingestuft werden:

  • Gespeicherte XSS-Angriffe
  • Reflektierte XSS-Angriffe
  • DOM-basierte XSS-Angriffe

Der Angriff selbst findet auf dem Client statt. Alle drei Angriffstypen können sich bei einer einzelnen Seite oder einer Offline-Anwendung vollständig im Browser selbst manifestieren. Wenn die Daten jedoch auf dem Server gespeichert sind oder vom Server reflektiert werden, hilft der Server bei der Sicherheitsanfälligkeit.

IE8 führte X-XSS-Schutz ein, wodurch es schwieriger wurde, reflektierte Angriffe auszunutzen.

The Spooniest
2014-11-27 08:01:25 UTC
view on stackexchange narkive permalink

Die Terminologie ist etwas rutschig, aber normalerweise ist ein "XSS-Fehler" ein clientseitiger Exploit einer serverseitigen Sicherheitsanfälligkeit .

Cross-Site Skripterstellung ist an und für sich kein Sicherheitsproblem . Das Problem ist, dass dies ohne Wissen des Endbenutzers geschehen kann. Die meisten Websites sind natürlich nicht dafür codiert: Entweder verwenden sie überhaupt kein Cross-Site-Scripting, oder sie machen deutlich, dass sie dies tun. Wenn Benutzer jedoch ihre eigenen Inhalte veröffentlichen können, müssen Sie sie davon abhalten, den Seiten beliebige Skript-Tags hinzuzufügen. Andernfalls könnten sie Inhalte in die Seite einfügen, die Daten an wen sendet, der weiß, wo.

Um dies zu verhindern, müssen Sie den vom Benutzer erstellten Inhalt analysieren und dann "sauberes" HTML für generieren Anzeige ohne die Tags, die Sie nicht möchten (z. B. Skript-Tags). Einige Websites nutzen diese Möglichkeit, damit Benutzer ihren Inhalt in einer Sprache erstellen, die nicht HTML ist: Stack Exchange verwendet Markdown. Aber solange Sie den Inhalt noch richtig analysieren , können Sie auch HTML als Eingabesprache verwenden. Es gibt keinen Leistungsvorteil, wenn HTML-zu-HTML ordnungsgemäß ausgeführt wird, da es dieselbe Art von Analyse- / Generierungszyklus durchläuft wie andere Sprachen, aber es ist eine Sprache weniger, die Entwickler (und möglicherweise Benutzer) lernen müssen. Sie müssen jedoch der Versuchung widerstehen, den HTML-Inhalt unverändert wiederzuverwenden oder anstelle eines Analyse- / Generierungszyklus einige Light-String-Ersetzungen vorzunehmen.

Ein "XSS-Fehler" tritt auf, wenn Benutzer herausfinden, wie beliebiges HTML auf der Site veröffentlicht werden soll . Normalerweise geschieht dies, wenn Entwickler HTML-Eingaben direkt verwenden, ohne den Analyse- / Generierungszyklus zu durchlaufen, aber manchmal findet jemand einen Weg, den Generator der Site dazu zu bringen, ihnen HTML zu geben, für das er nicht entwickelt wurde. In beiden Fällen ist das Endergebnis dasselbe: Sobald ein Benutzer beliebiges HTML veröffentlichen kann, kann er damit Cross-Site-Scripting durchführen. Deshalb nennen wir es einen XSS-Fehler. Der Fehler liegt jedoch nicht im XSS selbst, sondern im serverseitigen Code, mit dem zunächst beliebige Skripts veröffentlicht werden konnten.

`Cross-Site-Scripting ist an und für sich kein Sicherheitsproblem` Cross-Site-Scripting ** ist ** ein Sicherheitsproblem.Was es nicht ist, ist, dass es kein Sicherheitsproblem ist, das auf der Clientseite gelöst werden kann.
Es ist kein Sicherheitsproblem auf Websites, die speziell dafür entwickelt wurden.jsFiddle und seine Brüder kommen in den Sinn, und sogar einige Stack Exchange-Sites tun das Gleiche.Was jedoch verhindert, dass XSS * in diesem Zusammenhang * zu einem Sicherheitsrisiko wird, ist, dass diese Websites sorgfältig eingerichtet werden, sodass ohne Wissen des Benutzers nichts ausgeführt wird: Beispielsweise sind die Skripte niemals automatisch.XSS-Angriffe müssen im Allgemeinen * ohne * Wissen des Benutzers ausgeführt werden. Dies macht sie zu einem Sicherheitsproblem.
Pim de Witte
2014-11-26 21:49:17 UTC
view on stackexchange narkive permalink

Es wird im Allgemeinen empfohlen, so viele Dinge wie möglich auf der Serverseite und nicht auf der Clientgröße aus folgenden Gründen zu filtern:

  • Leistung
  • Haftung (Sobald Sie Daten gesendet haben, die Sie nicht haben sollten, können Sie deren Auswirkungen nicht mehr kontrollieren.)
  • Benutzersicherheit (Sie wissen im Allgemeinen nicht, über welche Version Ihres Clients die Benutzer verfügen)

Ein XSS-Angriff unterscheidet sich nicht wesentlich von einer SQL-Injection. Beides wird dadurch verursacht, dass Benutzereingaben nicht richtig gesteuert werden. XSS-Angriffe werden im Allgemeinen in Ihrer Datenbank gespeichert und über Ihr System an Ihre Clients verteilt.

Das Filtern nach XSS-Angriffen sollte nach Benutzereingaben erfolgen. Sie sollten im Allgemeinen keine Javascript-Eingaben akzeptieren. Wenn Sie unbedingt benötigen, dass Ihre Clients Javascript eingeben können, z. B. bei Programmierseiten, sollten Sie es zuerst maskieren.

Ich hoffe, es hat geholfen. Ich empfehle diese Lektüre für weitere Informationen: https://www.owasp.org/index.php/XSS_%28Cross_Site_Scripting%29_Prevention_Cheat_Sheet

Bradford Medeiros
2016-06-23 20:19:44 UTC
view on stackexchange narkive permalink

Ich habe einige Leute gelesen, denen es wichtig ist, die URL oder was auch immer nicht zum Laden anderer Benutzerinformationen oder was auch immer zu verwenden (wie einige hier in Googles Tutorial - https://xss-game.appspot.com/)

Das ist zwar schön zu wissen, aber Sie müssen sich daran erinnern, dass jede einzelne Funktion und jeder einzelne Code auf der Clientseite willkürlich ausgeführt werden kann. Die Validierung und der Schutz für XSS erfolgen vom Server. Ich meine, denken Sie darüber nach, Sie können die Konsole selbst öffnen.

Die Idee ist die Injektion von bösartigem Code vom Client, der letztendlich eine Sicherheitslücke auf dem Server darstellt. Dies kann dazu führen, dass die anderen Clients Webseiten mit darin eingebetteten beschissenen Skripten erhalten. Stellen Sie sich ein Forum vor - wenn Sie nur Tags in diesem Beitrag gespeichert und gerendert haben, den jemand erstellt hat, können Sie möglicherweise Code für jeden ausführen, der diesen Forumbeitrag anzeigt.

Wenn beispielsweise der Stapelüberlauf nicht ordnungsgemäß maskiert wurde Sie wären wahrscheinlich zu google.com mit dem folgenden

window.location.href = ' http://google.com' weitergeleitet worden (stellen Sie sich vor, dies wäre umgeben von Skript-Tags, SE formatiert sie aus und ist zu faul, um ihnen zu entkommen)

user4294507
2016-06-23 21:45:21 UTC
view on stackexchange narkive permalink

Es handelt sich um eine serverseitige Sicherheitsanfälligkeit, die über clientseitige Anwendungen ausgenutzt werden kann.

Obwohl Sie richtig liegen, hat eine andere Antwort bereits darauf hingewiesen.
00001c xxx
2018-02-08 05:00:19 UTC
view on stackexchange narkive permalink

"Grundsätzlich kann ein Angreifer durch Erstellen einer speziell formatierten E-Mail JavaScript einbetten, sodass das Skript im Browser des Opfers ausgeführt wird, wenn die E-Mail auf Yahoo Mail angezeigt wird", sagte Pynnonen in einer E-Mail an Threatpost. "Der Angreifer benötigte keinen speziellen Zugriff. Tatsächlich kann der Angriff ausgeführt werden, ohne sich bei Yahoo Mail zu registrieren. Es wird nur die Yahoo-E-Mail-Adresse des Opfers benötigt. “

In einer Beschreibung der am Donnerstag veröffentlichten Sicherheitsanfälligkeit erklärte Pynnonen, wie er eine E-Mail mit böswilligen Daten- * Attributen formatieren kann, die böswilliges JavaScript an den ausgeführten Yahoo-Filtern vorbeischleichen durch Missbrauch der Art und Weise, wie Yahoo Mail Links zu Websites auf der Whitelist wie YouTube anzeigt. [hier vorformatierten Text eingeben] [1]

Aurora
2014-11-26 23:19:38 UTC
view on stackexchange narkive permalink

Im Gegensatz zu dem, was viele andere glauben, ist xss sowohl clientseitig als auch serverseitig.

Ein persistentes xss ist serverseitig, da der Server den Code ausführt, der im Client ausgeführt werden soll. Wenn es nicht persistent ist, wird es als clientseitig betrachtet, da der Client das Ergebnis nur über diese Eingabe erhalten kann.

Sinnvoll?



Diese Fragen und Antworten wurden automatisch aus der englischen Sprache übersetzt.Der ursprüngliche Inhalt ist auf stackexchange verfügbar. Wir danken ihm für die cc by-sa 3.0-Lizenz, unter der er vertrieben wird.
Loading...