Poprawianie atrybutów w tekście

2

Coyote tekst w nawiasach ostrych traktuje jak xhtml i "poprawia" "atrybuty" zamieniając foo na foo=foo, np:

Imie: <tutaj wpisz swoje imie>

zamienia na

Imie: <tutaj wpisz="wpisz" swoje="swoje" imie="imie">

screenshot-20231120114524.png

Wydaje mi się że skoro już potraktował ten tag nie jako HTML i zamienił < na &lt; to konsekwentnie nie powinien ruszać reszty wewnątrz

1

Jest to jeden ze starszych błędów na Coyote. Jeśli mnie pamięć nie myli, to niezależny sanitizer jest temu winny. Nie znalazł się jeszcze śmiałek, który by załatał ten problem. A przydałoby się.

0

Zerknę.

On w ogóle nie powinien pokazywać tekstu który się łapie jako HTML. Powinien go albo wyrenderować (jeśli jest dozowlony, jak <p>, <a>, <kbd>, <u>), albo nie pokazać w ogóle (jak jest zły <script>, <iframe>, <style>, etc.).

PS: @Marooned @obscurity teraz chyba jest okej?

1

<ala ma kota> -> <ala ma="ma" kota="kota">

Nie, teraz jest gorzej, bo nic nie widać. Ja często używam nawiasów ostrych jako nawiasów. Dlaczego nagle tekst znika? Powinien być zamieniony na &lt;ala ma kota&gt; i zrenderowany jako <ala ma kota>.

Nie testujmy na produkcji, serio.

0
Marooned napisał(a):

Nie, teraz jest gorzej, bo nic nie widać. Ja często używam nawiasów ostrych jako nawiasów. Dlaczego nagle tekst znika? Powinien być zamieniony na &lt;ala ma kota&gt; i zrenderowany jako <ala ma kota>.

No ale to chyba jest niezgodne z Markdown?

Jak chcesz napisać <, to możesz zrobić escape, i napisać \<ala ma kota\>.

0

Ale co mnie obchodzi zgodność z Markdown? Markdown powinien wyłapać pewne znaki i zamienić je na HTML. Wszystko inne powinien zostawić nietknięte. To nie 1997 by trzeba było używać escape do tekstu...

W tej chwili Twoja frywolka rozwaliła zapewne setki wpisów na portalu powodując zniknięcie tekstu w losowych miejscach.

0
Marooned napisał(a):

Ale co mnie obchodzi zgodność z Markdown? Markdown powinien wyłapać pewne znaki i zamienić je na HTML. Wszystko inne powinien zostawić nietknięte. To nie 1997 by trzeba było używać escape do tekstu...

No używamy Markdown na forum (w postach, prywatnych messagach i kompendium). Renderer i edytor też działają pod markdown.

No chyba że chcemy wymyślić swój niestandardowy format? I w niektórych miejscach będzie pasować, w niektórych nie.

W tej chwili Twoja frywolka rozwaliła zapewne setki wpisów na portalu powodując zniknięcie tekstu w losowych miejscach.

No dobrze, przywrócę.

0
Riddle napisał(a):

No używamy Markdown na forum (w postach, prywatnych messagach i kompendium). Renderer i edytor też działają pod markdown.

Marooned napisał(a):

Markdown powinien wyłapać pewne znaki i zamienić je na HTML. Wszystko inne powinien zostawić nietknięte.

że tak się powtórzę i zmarnuję czas i bajty na ten post.

0
Marooned napisał(a):
Riddle napisał(a):

No używamy Markdown na forum (w postach, prywatnych messagach i kompendium). Renderer i edytor też działają pod markdown.

Marooned napisał(a):

Markdown powinien wyłapać pewne znaki i zamienić je na HTML. Wszystko inne powinien zostawić nietknięte.

że tak się powtórzę i zmarnuję czas i bajty na ten post.

No i czemu konkretnie tekst <ala ma kota> nie powinien być złapany jako html? Samo <ala> powinien? a <ula>?

0

A jest dozwolonym tagiem HTML na 4p? Nie jest. Zatem sanitizer nie powinien go wstawić, tylko zrenderować jako tekst.

0
Marooned napisał(a):

Ale co mnie obchodzi zgodność z Markdown? Markdown powinien wyłapać pewne znaki i zamienić je na HTML. Wszystko inne powinien zostawić nietknięte. To nie 1997 by trzeba było używać escape do tekstu...

Jak chcesz napisać specjalny znak Markdown, jak [, -, *, 1., > lub `. To też musisz go wyescapeować. Dla przykładu - żeby napisać w poście ciąg * test - też musisz go zapisać \* test (bo inaczej zostanie potraktowany jako lista). Tak działa markdown po prostu. Nie widzę czemu tag HTML miałby się zachować inaczej.

Marooned napisał(a):

A jest dozwolonym tagiem HTML na 4p? Nie jest. Zatem sanitizer nie powinien go wstawić, tylko zrenderować jako tekst.

@Marooned: Czyli idąc tym ciągiem, <u mnie działa> oraz <a ja lubię> powinny być uznane za HTML? Skoro <u> i <a> są dozwolone?

No i też nie wspominając że w Markdown jest syntax linków z trójkątnymi nawiasami, więc <mail@com> to jest to samo co [mail@com](mail@com). Więc to by znaczyło że trójkątne nawiasy byłby handlowane na 3 różne sposoby zaleznie od treści. Nie wiem czy to dobry pomysł.

No chyba żeby zrobić ifologię:

  1. jeśli pasuje do formatu linków markdown - link
  2. jeśli jest dozwolonym tagiem z dozwolonymi atrybutami - html
  3. else pokaż jawnie
0

Jedno jest pewne. Ukrywanie to najgorszy z możliwych sposobów.

0
Marooned napisał(a):

Jedno jest pewne. Ukrywanie to najgorszy z możliwych sposobów.

Znak < jest znakiem specjalnym w Markdown, więc żeby użyć go jawnie, trzeba dodać escape, po prostu. Napisz \<ala ma kota> (tego drugiego nie trzeba escape'ować).

Gdyby posty były pisane plaintekstem, tak jak np na fejsie albo whatsappie to miałbyś rację: zapis <ala ma kota> powinien się pokazać jawnie. Ale posty nie są plaintekstem, tylko Markdownem. I Markdown inaczej traktuje tekst pomiedzy <,>. Tak samo jak zapis pomiędzy [,] traktuje jak link, zapis pomiędzy |,| jak tabelkę, oraz pomiędzy ![,] jak obrazek, tak samo inaczej traktuje tekst pomiędzy <,>.

@Marooned: Zobacz sobie https://markdownlivepreview.com/, zobaczysz że wszystkie tagi HTML nie są pokazywane jawnie. Są zamieniane albo na jakieś decoracje (<b>, <i>, <kbd>, albo się nie pokazują wcale).

Mój fix poprzedni, to nie jest ukrywanie niczego. To jest respektowanie specyfikacji markdown, która mówi że stringi pomiędzy <,> nie powinny być traktowane jako plain text. Tak na prawdę zapis <ala ma kota> powinien się pokazać jako HTML w treści strony - tylko że purifier go usuwa, jako niepoprawny tag.

1

Markdown pojawił się tu relatywnie niedawno. Wprowadzanie nagle zmiany, że wszystko między nawiasami ostrymi znika bez śladu to nieporozumienie. A nawiasów kwadratowych używam chyba częściej niż okrągłych. Są pod ręką i wygodniejsze. Tu na szczęście zawartość nie znika.

To już lepiej przywróć buga, bo przynajmniej widać, że coś nie halo, ale da się odczytać treść. Plus na 4p wielokrotnie było pisane, że mamy mix Markdowna i HTML. Ot, historyczna naleciałość.

Jasne, można się trzymać jakiegoś zewnętrznego standardu, ale jeśli nie ma on sensu w jakimś momencie, to pytanie czy warto. Moim zdaniem nie warto [argumenty powyżej].

0
Marooned napisał(a):

Markdown pojawił się tu relatywnie niedawno. Wprowadzanie nagle zmiany, że wszystko między nawiasami ostrymi znika bez śladu to nieporozumienie. A nawiasów kwadratowych używam chyba częściej niż okrągłych. Są pod ręką i wygodniejsze. Tu na szczęście zawartość nie znika.

To już lepiej przywróć buga, bo przynajmniej widać, że coś nie halo, ale da się odczytać treść.

No to treść która była niezgodna z markdownem (i przez to wyświetli się źle) została pogrzebana w momencie wprowadzania markdown - czyli już dawno temu.

Marooned napisał(a):

A nawiasów kwadratowych używam chyba częściej niż okrągłych. Są pod ręką i wygodniejsze. Tu na szczęście zawartość nie znika.

Znika, jeśli napiszesz [foo]: bar. W Markdown jest to link-reference.

Marooned napisał(a):

Plus na 4p wielokrotnie było pisane, że mamy mix Markdowna i HTML. Ot, historyczna naleciałość.

Ale nie ma czegoś takiego jak mix Markdown+Html. Markdown zawiera w sobie HTML.

To że na forum jest <b>, <i>, <kbd>, <sup>, <sub>, <tex> to jest wszystko zgodne z Markdown. Markdown pozwala używać HTML'a, owszem - ale jako markup. Nie jako jawna treść. Więc <ala ma kota> też powinien zostać użyty jako markup - czyli się nie wyświetlić, chyba że < będzie escape'owane \<.

PS: Tak na prawdę jedyną rzeczą na forum jaka jest niezgodna z Markdown to są te !! w komentarzach :D
PS2: Poza tym, zobacz choćby inne serwisy które używają Markdown, jak Github - tam też <ala ma kota> się nie pokaże, chyba że dodasz escape. Podobnie jest w http://youtrack.jetbrains.com/.

Cofnąłem tego fixa z "chowaniem", tak długo jak nasza rozmowa trwała, no ale nie widzę sensownych argumentów za tym żeby pokazywać <ala ma kota> :/

0

Perfekcyjnie by było trzymać stare wersje parsera i używać odpowiedniej w zależności od ostatniej daty modyfikacji postu, wtedy wszystkie posty od początku istnienia forum wyświetlałyby się poprawnie i swobodnie by było można wprowadzać nowe opcje do edytora, jednocześnie nie trzeba by było ich nawet łatać bo nie dałoby się używać exploitów wstecz. Ale teraz to chyba już na to za późno bo stare posty już i tak poszły się rypać i nie wygląda na to żeby markdown miał być czymś zastąpiony.

Ja myślę że jeśli trzeba wybierać to wsteczna kompatybilność jednak jest ważniejsza niż zgodność ze standardem.

0
obscurity napisał(a):

Ja myślę że jeśli trzeba wybierać to wsteczna kompatybilność jednak jest ważniejsza niż zgodność ze standardem.

Na takie decyzje to i tak trochę za późno, bo markdown został dodany lata temu, i nic nie zostało w tej sprawie zrobione żeby zachować jakąkolwiek kompatybilność z wcześniejszym formatowaniem.

Pierwszy lepszy stary post: Aplet Javy na ftp. Zwykły tekst się zamienił w kod, przez wcięcia (które w Markdownie są zamieniane na blok kodu).

No nie da się mieć dwóch rzeczy. Nie możesz powiedzieć "zostawmy stare posty zepsute przez markdown, ale nie poprawiajmy buga w bibliotece żeby nie zepsuć postów przez markdown".

Trzeba było podnieść argumenty o kompatybilność wstecz jak Markdown był wprowadzany (jak widzę w historii to w 2015r.). Poza tym, jak teraz czytam historię zmian, to widzę że purifier został dodany najpierw, razem z tym żeby HTML'y były widoczne, bo wtedy jeszcze na forum był plaintext + html. Potem został dodany markdown, a ustawienia purifiera nie zostały zmienione - mimo że powinny, żeby pasować do specyfikacji.

1
Riddle napisał(a):

No nie da się mieć dwóch rzeczy. Nie możesz powiedzieć "zostawmy stare posty zepsute przez markdown, ale nie poprawiajmy buga w bibliotece żeby nie zepsuć postów przez markdown".

No właśnie teoretycznie się da i opisałem jak, jednocześnie można poprawić nawet buga.

Riddle napisał(a):
[obscurity napisał(a)](/Forum/1936

Na takie decyzje to i tak trochę za późno, bo markdown został dodany lata temu, i nic nie zostało w tej sprawie zrobione żeby zachować jakąkolwiek kompatybilność z wcześniejszym formatowaniem.

Jednak od tamtej pory powstało dziesiątki tysięcy postów i zrobienie tego znowu jest trochę szalone.
Zachowanie markdown też nie jest jakieś wspaniałe - czemu treść tagu znika skoro i tak nie jest traktowany jako html?

0
obscurity napisał(a):
Riddle napisał(a):

No nie da się mieć dwóch rzeczy. Nie możesz powiedzieć "zostawmy stare posty zepsute przez markdown, ale nie poprawiajmy buga w bibliotece żeby nie zepsuć postów przez markdown".

No właśnie teoretycznie się da i opisałem jak, jednocześnie można poprawić nawet buga.

Inne renderowanie nowych i starych postów to nie jest dobre wyjście.

obscurity napisał(a):

Jednak od tamtej pory powstało dziesiątki tysięcy postów i zrobienie tego znowu jest trochę szalone.

Jakakolwiek zmiana renderowania postów aktualnie niesie pewne konsekwencje. Nie znaczy że nie powinniśmy ich wprowadzać.

obscurity napisał(a):

Zachowanie markdown też nie jest jakieś wspaniałe - czemu treść tagu znika skoro i tak nie jest traktowany jako html?

Te tagi nie są "traktowane jako html". To jest durny kawałek kodu w starej bibliotece HTMLPurifiera która zamienia < na &lt; i tyle. Tam nie ma żadnej koncepcji spójnej ani nic takiego.

Natomiast, zachowanie "normalnego" Markdown jest spójne. Tzn. żaden tag HTML się nie pojawia jawnie (jedynie może mieć efekt w postaci markupu, jak pogrubienie, pochylenie, tabelka, etc). To przez mixup purifiera i markdowna w kodzie są takie cyrki.

Ja na prawdę nie rozumiem o co jest to całe halo. Znak < jest znakiem specjalnym w Markdown i jest interpretowany - jeśli chce się go wpisać jawnie, to należy go wyescape'ować. Czemu to w ogóle budzi kontrowersje? :|

obscurity napisał(a):

Dzięki systemowi kontroli wersji kompatybilność wstecz można przywrócić nawet dziś jeśli ktoś się uparł

Usuwając markdown? No super pomysł.

0
Riddle napisał(a):

Inne renderowanie nowych i starych postów to nie jest dobre wyjście.

Dlaczego? Zdecydowanie lepsze niż trzymanie starej i nowej wersji forum co robiły niektóre fora w sieci.

Riddle napisał(a):

Trzeba było podnieść argumenty o kompatybilność wstecz jak Markdown był wprowadzany (jak widzę w historii to w 2015r.).

Dzięki gitowi kompatybilność wstecz można przywrócić nawet i dziś jeśli ktoś by się uparł. Jednocześnie nowe posty miałyby czysty markdown bez żadnych kombinacji i zażaleń.

0

@Marooned: Możemy dodać fixa, takiego ze jak napiszesz <u mnie działa>, to edytor podkreśli to jako niepoprawny HTML, i udostępni opcję, do tego żeby go wyescape'ować jednym skrótem?

1 użytkowników online, w tym zalogowanych: 0, gości: 1