Martinay / SERisiko

4 stars 0 forks source link

XSS - Input einer ChatMessage auf Serverseite säubern, bevor sie an andere Clients rausgeht #87

Closed plunz closed 10 years ago

plunz commented 10 years ago

Als Beispiel zerschießt die folgende Codezeile das gesamte Spiel für alle Clients bei Ausführung in der Browser-Konsole eines beliebigen Clients.

Core.connectionHandler.sendChatMessage('<META HTTP-EQUIV="refresh"CONTENT="0;url=data:text/html;base64,PHNjcmlwdD5hbGVydCgndGVzdCBsdWx1bHUnKTwvc2NyaXB0Pg==">');
Krypt0n commented 10 years ago

seit wann kann man "<" und ">" senden?

plunz commented 10 years ago

Die Blockade ist nicht schwer zu überlisten. Du wirst den User auf der Client-Seite nie davon abhalten können gefährliches Input an den Server zu schicken. Deshalb muss die Säuberung auf Seite des Servers direkt nach Eingang der Daten erfolgen.

Krypt0n commented 10 years ago

ich weiß, wolte nur sichergehen ob es clietnseitig geht, der rest ist mir ja egal d.h. übers normale ui

plunz commented 10 years ago

Richtig, das geht nicht.

n-e-r-v commented 10 years ago

und das alles für alex seine 0815 chat funktion ;)

plunz commented 10 years ago

Code schaut gut aus. Thx!

plunz commented 10 years ago

Sorry Steve! Bei Spielername und Spielname geht's noch immer. Vielleicht einfach eine Ebene drüber anfassen und generell alles an User-Input encoden?

n-e-r-v commented 10 years ago

wäre ne option, solange er das json nicht zerlegt dabei.

plunz commented 10 years ago

Dann eben alles was an "Content", abzüglich der Meta-Informationen rausgeht encodieren. Kenne mich in der Architektur nicht aus, aber bin mir sicher, dass du was finden wirst. :)

n-e-r-v commented 10 years ago

as simple as possible