ostpower Geschrieben 31. Mai 2010 Geschrieben 31. Mai 2010 Tach zusammen, kennt sich jemand mit Whitelists aus? Ich habe ein Webapplikationen mit Freitextfeldern. Diese möchte ich gegen XSS schützen. Da eine Blacklist ja keinen ausreichenden Schutz bietet, möchte ich eine Whitelist erstellen. Wie mach ich das, also welchen Zeichen sollen da drin steht, weil wenn ich z.B. sage es sind alle Zeichen a-z und sonderzeichen auch, dann könnte ich ja auch <script> schreiben, was ja gefährlich ist.
kingofbrain Geschrieben 31. Mai 2010 Geschrieben 31. Mai 2010 Servus, ich kenne zwar die Bedenken der OWASP bezüglich einer Blacklist, in meinen Projekten arbeite ich aber immer mit einer solchen. Ich verbiete z.B. die Zeichen '>' und '<'. Wenn diese bei bestimmten Formularen benötigt werden, dann werden sie vor der Anzeige escaped. Und wenn ich komplette Textabschnitte speichern muss, die Markup enthalten, dann arbeite ich gerne mit Antisamy (für Java), weil ich dort sehr genau festlegen kann, welche Elemente und welche Attribute ich erlaube. Das alles hängt aber sehr stark von den fachlichen Anforderungen an das Textfeld ab. Was hast Du denn für Vorgaben: Welche Daten werden in den Formularen erfasst, was ist (fachlich) erlaubt, was nicht? Erst dann kann man die richtige Strategie entwickeln. Schöne Grüße, Peter
ostpower Geschrieben 31. Mai 2010 Autor Geschrieben 31. Mai 2010 Na ja im Prinzip soll kein Sonderzeichen komplett ausgeschlossen werden. Also z.B. das "<" oder ">" soll schon möglich sein. Nur die gefährliche Kombination mit "script" o.ä. soll verboten werden. Wie macht man das am besten? Weil durch solche Kombination kann ich ja keine einfache Liste erstellen mit erlaubten zeichen. Weil wenn ich eigetlich alle Zeichen erlaube, wie kann ich dann z.b. ein "<script>" ausschließen?
Guybrush Threepwood Geschrieben 31. Mai 2010 Geschrieben 31. Mai 2010 Womit ist deine Webapplikation denn erstellt? Verschiedene Technologien bieten für sowas ja bereits Unterstüzung an.
kingofbrain Geschrieben 31. Mai 2010 Geschrieben 31. Mai 2010 Wenn Du einzelne Zeichen nicht ausschließen kannst oder willst, dann musst Du halt Zeichenketten filtern. Dann eben "<script>" als ganzes, zusätzlich natürlich alle encodierten, aber für den Browser decodierbaren Varianten und wahrscheinlich noch das "javascript:" Pseudoprotokoll. Aber da kommt es wieder darauf an (s.o.), was die Daten fachlich machen sollen. Das heißt, wo zeigst Du diese Daten wieder an? Wenn sie nie mehr im Kontext von Markup gezeigt werden, ist XSS uninteressant. Ansonsten musst Du die Zeichen eben bei der Ausgabe encodieren, nicht bei der Eingabe filtern. Peter
Empfohlene Beiträge
Erstelle ein Benutzerkonto oder melde Dich an, um zu kommentieren
Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können
Benutzerkonto erstellen
Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!
Neues Benutzerkonto erstellenAnmelden
Du hast bereits ein Benutzerkonto? Melde Dich hier an.
Jetzt anmelden