Doppeltes BBCode Attribute encoding

  • Affected Version
    WoltLab Suite 5.3
    Affected App
    WoltLab Suite Core

    Ich habe einen BBCode der als Attribute URLs erlaubt/benötigt.

    Wenn ich den BBCode mit URLs einfüge, werden diese html kodiert (&). Bei einem neuen Post (woanders habe ich es noch nicht getestet) werden die Attribute vor dem Absenden von Javascript in base64 kodiert. Wenn ich diesen Post jetzt bearbeite kommen die Attribute base64 kodiert zurück und werden vom Javascript wieder dekodiert (Die URLs enthalten kodierte &amps;). Dies wird aber jetzt nochmal html kodiert, sodass daraus &. Sobald ich also einen Post bearbeite, gehen die URLs kaputt.

    Habe ich eine Möglichkeit übersehen, zu sagen, dass die Attribute nicht kodiert werden sollen oder ist das ein Fehler im WSC?

  • Da hast du recht, ich meine &. Ein Beispiel. Ich habe einen BBCode der ein Attribut hat:

    Code
    [link='https://woltlab.com/test/?show=profile&filterBy=activity'][/link]

    Dieser wird beim speichern base64 kodiert in der Datenbank gespeichert:

    Code
    <woltlab-metacode data-name="link" data-attributes="WyJodHRwczovL3dvbHRsYWIuY29tL3Rlc3QvP3Nob3c9cHJvZmlsZSZhbXA7ZmlsdGVyQnk9YWN0aXZpdHkiXQ=="></woltlab-metacode>

    Wenn ich diesen Eintrag (z.B. Forum-Post) wieder bearbeite, wird das wieder base64 dekodiert:

    Code
    [link='https://woltlab.com/test/?show=profile&amp;filterBy=activity'][/link]

    und jetzt ist das & doppelt kodiert. Wechsel ich in die Quellcodeansicht steht dort &amp;amp;. Beim nächsten speichern würde das dann so gespeichert:

    Code
    <woltlab-metacode data-name="link" data-attributes="WyJodHRwczovL3dvbHRsYWIuY29tL3Rlc3QvP3Nob3c9cHJvZmlsZSZhbXA7YW1wO2ZpbHRlckJ5PWFjdGl2aXR5Il0="></woltlab-metacode>

    Bei jedem speichern passiert das wieder und wieder, sodass die URLs immer kaputter gehen.

  • Ich habe es vorerst nur für 5.4 angepasst, da ich dafür pauschal die Attribute von BBCodes beim Laden im Editor unescapen muss:

    Das ist für sich genommen vom Sicherheitsstandpunkt her OK, ich bin mir aber hinsichtlich der Auswirkungen nicht ganz im Klaren. Potentiell kann dies ungewollte Veränderungen nach sich ziehen, wenn darauf aufbauender Code auf dem "alten" Verhalten basiert und somit sich die Ausgangssituation ändert.

    Sobald feststeht, dass es keine nachteiligen Effekte hat, kann die Änderung bei Bedarf auch zurückportiert werden.

  • Alexander Ebert June 9, 2021 at 5:03 PM

    Set the Label from Confirmed to Fixed
  • Super, ja das ist verständlich, dass es erst in 5.4 behoben wird.

    Ich hab das jetzt erstmal so gelöst, dass ich die URLs anpasse, bevor ich sie verwende, sodass das kein Problem mehr ist. Der Nutzer sieht es nur noch, wenn der Beitrag bearbeitet wird. Das ist dann auch behoben :)

Participate now!

Don’t have an account yet? Register yourself now and be a part of our community!