HTML Escaping

0

elo

Mam taki string <b>asd</b> escapuje go na -> \u0026lt;b\u0026gt;asd\u0026lt;/b\u0026gt; i zwracam go z API

Chcę go wyświetlić w przeglądarce jako escapnięte <b>asd</b> (z użytymi &_amp; &_lt; itd.) np. przy użyciu Reacta, ale dostaje na ekran 0PtldJr.png

Why?

Chciałbym aby ten string był escapnięty, ale nadal wyglądał ładnie

edit. Ogarnąłem, że jeżeli bezpośrednio wrzucę do Reacta <b>asd</b>, to on już ogarnie aby to się wyświetliło dobrze i escapnęło, ale dlaczego powyższe nie działa?

I czy jeżeli mam endpoint, który wyrzuca takie wrażliwe HTMLe, to powinien to escapować by default? bo tutaj wychodzi, że nie jest to praktyczne i te frameworki jsowe same powinny to zrobić, ale z drugiej strony uważam, że nie jest to "secure-by-default"

Jakiś hello world w Reacie

https://jsfiddle.net/3h68fut7/

2

https://shripadk.github.io/react/docs/jsx-gotchas.html
https://stackoverflow.com/questions/44116800/how-to-show-html-entity-using-react
https://blog.mdavid626.com/2019/03/31/How-to-use-HTML-entities-without-dangerouslySetInnerHTML-in-React/

dlaczego powyższe nie działa?

Ponieważ obsługa HTMLowych encji (& lt; itd.) wymaga przeparsowania otrzymanego kodu HTML - React tego domyślnie nie robi z powodów bezpieczeństwa.

czy jeżeli mam endpoint, który wyrzuca takie wrażliwe HTMLe, to powinien to escapować by default?

IMO nie, ponieważ backend nie powinien się przejmować tym, dokąd dane trafiają - escapowanie ich byłoby takim leaking abstraction w kierunku htmlowego frontendu (gdybyś miał np. frontend we Flutterze, to z drugiej strony najprawdopodobniej nie chciałbyś otrzymać takich wyeskejpowanych danych).

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