Fehler (Bug) bei der Behandlung von URIs durch Discourse in Markdown-Inhalten

urn:records:test:3 ist eine gültige RFC 3986-URI.

Discourse verarbeitet sie nicht ordnungsgemäß, unabhängig davon, welches Markdown verwendet wird.

  • Fügen Sie sie einfach ein, wie eine HTTP-URI, und Discourse ignoriert völlig die Tatsache, dass es sich um eine URI handelt, wie hier: urn:records:test:3.

  • Umgeben Sie sie mit <>, also <urn:records:test:3>, und Discourse vertauscht die letzten beiden Segmente, wie hier: urn:records:3:test. Bei einem Rechtsklick zum Kopieren erhalten Sie entweder urn:records oder test:3, je nachdem, wo sich Ihr Mauszeiger genau befindet. Bei einem Linksklick passiert nichts, da sie nicht ganz als URI behandelt wird.

  • Verwenden Sie eine vollständige Link-Markup, also [Text über `urn:records:test:3`](urn:records:test:3), und Discourse entfernt das letzte Segment aus dem per Rechtsklick kopierbaren – und wiederum nicht anklickbaren – URI, live hier in Text über urn:records:test:3, wobei ein Rechtsklick zum Kopieren urn:records:test ergibt, oder wie bei [`urn:records:test:3`](urn:records:test:3), live hier in urn:records:test:3, wobei ein Rechtsklick zum Kopieren urn:records:test oder 3 ergibt, je nachdem, wo sich Ihr Mauszeiger genau befindet.

Ich habe keine exhaustive Prüfung aller gültigen URI-Konstruktionen durchgeführt. urn:records:test:3 ist einfach ein reales lokales Beispiel.

3 „Gefällt mir“

Tatsächlich funktioniert unsere Site-Einstellung allowed_href_schemes nur mit Schemata, die das Format scheme:// verwenden.

https://github.com/discourse/discourse/blob/master/app/assets/javascripts/pretty-text/addon/sanitizer.js#L59

4 „Gefällt mir“

Ich kann nicht sagen, ob damit ein Fehler bestätigt wird oder ob es heißt: „Ja, das ist das erwartete Verhalten

1 „Gefällt mir“

Das ist tatsächlich ein Fehler. Verursacht wird er durch unseren Sanitizer-Code, der nur href-Schemata erkennt, die mit dem Format scheme:// beginnen.

5 „Gefällt mir“

Ich habe gerade diesen Fehler mit geo-URIs entdeckt, die so aussehen: geo:36.95733984,-122.0172856.

Ich sehe, dass es eine Ausnahme für tel-URIs gibt:

    if (allowedHrefSchemes.includes("tel")) {
      extraHrefMatchers.push(new RegExp("^tel://\\+?[\\w\\.\\-]+", "i"));

Es gibt Uniform Resource Identifier (URI) Schemes, aber ich habe List of URI schemes - Wikipedia verwendet, um die Schemata zu prüfen, da diese Beispiele enthalten. Ich schaue mir das „Suffix

1 „Gefällt mir“

Das Einfügen des folgenden Textes in Discourse:

Für sichere Nachrichten und Anrufe verbinden Sie sich über Snikket/XMPP mit mir unter xmpp:maiki@chat.v2.talkgroup.xyz.

Erzeugt (nachdem xmpp zu allowed href schemes hinzugefügt wurde):

Für sichere Nachrichten und Anrufe verbinden Sie sich über Snikket/XMPP mit mir unter <a href="mailto:xmpp:maiki@chat.v2.talkgroup.xyz" dir="ltr">xmpp:maiki@chat.v2.talkgroup.xyz</a>.

Das Problem liegt in diesem Fall bei href="mailto:xmpp:maiki@chat.v2.talkgroup.xyz". Dies wird als Anwendungsfall für diesen Fehler notiert. :slight_smile:

2 „Gefällt mir“

Gibt es hierfür eine Umgehungslösung für GEO-URIs? Ich bin kein Entwickler.