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. Zitieren
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 Zitieren
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? Zitieren
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. Zitieren
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 Zitieren
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.