Arthoria.de Forum

Hauptspiel => Fehlermeldungen => Thema gestartet von: undernet am 02. Oktober 2015, 15:53:59

Titel: Gildennachrichten
Beitrag von: undernet am 02. Oktober 2015, 15:53:59
Gravierender Fehler!  :-D

Schreibt man irgendwas wie.. hallo 'das bezieht sich auf member' denkt an eure schuhe!

so erscheint "Nachricht hinzugefügt" aber es ist in den Nachrichten nichts zu sehen. Bitte Nachrichtenausgabe korregieren zu: Sonderzeichen etc. sind nicht erlaubt oder was besseres.
Titel: Antw:Gildennachrichten
Beitrag von: Yirara am 05. Oktober 2015, 20:28:56
Ich verstehe nicht genau, was du meinst?

In deinem Beitrag sind keine Sonderzeichen, die dort nicht angezeigt werden?!
Titel: Antw:Gildennachrichten
Beitrag von: Stonedgekko am 05. Oktober 2015, 20:35:06
Wenn man ' in der Nachricht verwendet kann es wohl zu Problemen kommen *übersetz*
Titel: Antw:Gildennachrichten
Beitrag von: Yirara am 06. Oktober 2015, 19:55:16
Mhm ok, wenn das gemeint ist benutzt doch einfach " anstatt ' und schon wäre das Problem gelöst.
Funktioniert genauso und ist in der deutschen Sprache üblich wenn man etwas besonders betonen will.
Titel: Antw:Gildennachrichten
Beitrag von: undernet am 06. Oktober 2015, 23:29:59
Du scheinst den Fehler nicht zu verstehen.
Titel: Antw:Gildennachrichten
Beitrag von: Sanglant am 06. Oktober 2015, 23:45:01
es ist unter umständen auch eine sicherheitslücke, deshalb wende dich besser direkt an xeri.
zumal es nicht schwer zu beheben sein dürfte. aber was das maskieren von besonderen zeichen anbelangt, war arthoria immer schon ein bisschen "eigen".
Titel: Antw:Gildennachrichten
Beitrag von: Yirara am 07. Oktober 2015, 18:36:07
Nein ganz verstanden habe ich deinen Beitrag nicht, denn de facto funktionieren Sonderzeichen.
Offensichtlich funktioniert das einzelne Sonderzeichen  ' nicht.
Gut, das es evtl ein Sicherheitsproblem geben könnte verstehe ich, aber rein textmäßig kann man dieses Problem eben beheben indem man " anstatt ' benutzt.
Titel: Antw:Gildennachrichten
Beitrag von: Galar am 07. Oktober 2015, 19:43:56
Zitat von: Yirara am 07. Oktober 2015, 18:36:07
Nein ganz verstanden habe ich deinen Beitrag nicht, denn de facto funktionieren Sonderzeichen.
Offensichtlich funktioniert das einzelne Sonderzeichen  ' nicht.
Gut, das es evtl ein Sicherheitsproblem geben könnte verstehe ich, aber rein textmäßig kann man dieses Problem eben beheben indem man " anstatt ' benutzt.

Aber: "V. Es ist nicht gestattet, sich oder anderen Spielern über Fehler im System Vorteile zu verschaffen. Derartige Fehler müssen umgehend bei einem Moderator gemeldet werden und dürfen nicht ausgenutzt werden."

Es ist nicht beweisbar, dass man sich über diesen Fehler keinen Vorteil beschaffen könnte. Somit muss der Fehler gemeldet werden. Wurde ja gemacht.

Weiß ehrlich nicht, was diese ganze Diskussion zur Umgehung soll ...
Titel: Antw:Gildennachrichten
Beitrag von: Chevalie am 07. Oktober 2015, 19:50:57
Ich kann Yira schon verstehen, letztendlich bedeutet eine Korrektur schließlich Arbeit für Xeri (und dessen Zeit ist, wie wir alle wissen, äußerst knapp). Außerdem sehe ich bis jetzt keine Möglichkeit zur Vorteilsbeschaffung (?)

Tatsächlich wäre es am einfachsten, einfach ' durch " zu ersetzen, denn seien wir mal ehrlich: wie oft braucht man dieses Zeichen schon?
Trotzdem ist es natürlich immer gut, Fehler zu melden :-)

Titel: Antw:Gildennachrichten
Beitrag von: Stonedgekko am 08. Oktober 2015, 02:04:02
Wenn Sonderzeichen nicht richtig maskiert(Tante Edit sagt: "oder gefiltert") werden in Websites die von Nutzern erstellten Text wiedergeben, so besteht die Möglichkeit Fremdcode zu injizieren, was fatale Folgen haben kann.
Bei ' ist das jetzt glaub nicht so kritisch aber selbst ne winzige Sicherheitslücke könnte von jemand mit dem nötigen knowhow ausgenutzt werden ;)
Schlimm wäre wenn < nicht richtig maskiert wäre, aber ich glaube das hat Xeri bereits bedacht^^

How The Self-Retweeting Tweet Worked (https://www.youtube.com/watch?v=zv0kZKC6GAM) <--nen lustiges Beispiel eines solchen Exploits.
Titel: Antw:Gildennachrichten
Beitrag von: Valdar am 08. Oktober 2015, 07:42:44
Zitat von: Stonedgekko am 08. Oktober 2015, 02:04:02
Bei ' ist das jetzt glaub nicht so kritisch

doch, das ist in SQL ziemlich kritisch ;)
Aber ihr schweift ab: die ' werden gefiltert statt maskiert, damit ist Arthoria höchstwahrscheinlich nicht anfällig. undernet hätte gerne ein Maskierung statt der Filterung und an dieser Stelle würde ich tatsächlich auf Yiraras Vorschlag verweisen :-D
Titel: Antw:Gildennachrichten
Beitrag von: Stonedgekko am 08. Oktober 2015, 19:29:16
Oh ok, mit SQL kenn ich mich nicht aus.

Beobachtet hab ich folgendes:
test 'test' test -> test est test
'test test test' -> Nachricht wird nicht angezeigt.
test 'test test' -> Nachricht wird nicht angezeigt.
'test test'test -> est test est 

Denke es gibt nen Bug im Filter, der nicht nur ' sondern auch das darauf folgende Zeichen entfernt, was wenn ' am Ende des Strings steht wohl dazu führt, dass die Nachricht garnicht erst angezeigt wird.
Titel: Antw:Gildennachrichten
Beitrag von: Yirara am 08. Oktober 2015, 19:55:22
Lustig, bei test 'test' = test est

Aber bei zB yxz 'yxz' yxz = yxz yxz yxz

Tja scheint wohl nicht ganz zu funktionieren die Filterung. ^^

Benutzen wir alle lieber " und haben unsere Ruhe. ;)

Edit: Wenns am Ende steht erscheint tatsächlich die gesamte Nachricht nicht.
Titel: Antw:Gildennachrichten
Beitrag von: TheLightPrince am 08. Oktober 2015, 23:39:25
Eure beobachtungen sind nur oberflächlich korrekt. Da passiert etwas anderes, was ich hier jetzt aber nicht ausführen möchte.

PS: Ist aber meines Erachtens nach nicht exploitable, da die Abfrage keine gültigkeit mehr erhalten kann, nach dem Unterbrechen per '-Zeichen.
Titel: Antw:Gildennachrichten
Beitrag von: Xeridar am 09. Oktober 2015, 12:11:27
Eine Sicherheitslücke war es glücklicherweise nicht, dennoch habe ich mich darum gekümmert. Scheint jetzt alles korrekt zu funktionieren :)
Titel: Antw:Gildennachrichten
Beitrag von: undernet am 09. Oktober 2015, 13:47:56
Daumen hoch  :-D

Kann geschlossen werden
Titel: Antw:Gildennachrichten
Beitrag von: Valdar am 09. Oktober 2015, 19:46:50
Da es korrigiert ist: magst du es doch noch ausführen, TLP?
Titel: Antw:Gildennachrichten
Beitrag von: TheLightPrince am 10. Oktober 2015, 04:28:42
Es ist ne Mischung aus escapen und händischem replace von zeichen.

Das '-Zeichen wird escapt und anschließend entfernt, wodurch ein unescapter backslash überbleibt. Zusammen mit gewissen Zeichen ergeben sich besondere bedeutungen. Eine davon ist der backslash am ende, wodurch das stringende escapt wird und dadurch kein gültiger code entsteht => keien nachricht wird eingetragen.
im falle von 'test( -> \'test -> \test ) ergibt sich das Sonderzeichen \t (ein Tab).
\s ergibt ein leerzeichen
\n wird scheinbar wieder ersetzt und ergibt ebenfalls ein Leerzeichen.

hat man beispielsweise eine gerade anzahl an '-Zeichen eingegeben, so ergibt sich immer eine sammlung an escapten backslashes, wodurch das letzte zeichen nicht escapt wird und die nachricht wird gesendet. Jede ungerade anzahl an '-zeichen am ende der nachricht ergibt eine ungerade anzahl an backslashes, wodurch immer das letzte das stringende escapt -> ungültiger SQL Code.

Iwas anderes passierte aber auch noch, da die backslashes mehrfach verarbeitet wurden und beispielsweise leere Nachrichten erzeugt werden konnten per '' -> \'\' -> \\ -> \ -> [EMPTY].

@Xeri:
Zum Fix: Leider die falsche Funktion erwischt. Wenn ich das richtig sehe hast du htmlentities verwendet, aber htmlspecialchars wird beim Kontextwechsel von PHP nach HTML verwendet. htmlentities macht zu viel und wird heute nicht mehr wirklich verwendet.

und Xeri, wenn du gerade dabei bist: Selber "Bug" auch bei Grund für Einzahlung in die Gildenkasse ;)
bzw.: Du hast das an ganz vielen Stellen drin. Einfach mal versuchen den Spieler ' in die Gilde einzuladen, dann ist die Ausgabe, das der Spieler \\\' nicht gefunden werden konnte.
Bei Rängen kommt wenn man am Ende ein '-Zeichen platziert ein backslash raus
und so weiter und so weiter :) Code aus längst vergessen Tagen ^^

Lg TLP