Bistard / nota

📕Next-Gen AI-powered markdown note-taking application.
MIT License
58 stars 5 forks source link

[UI][Editor] `MarkType` displays HTML escaping characters #235

Open Bistard opened 1 month ago

Bistard commented 1 month ago

Describe the bug Characters like &, <, > will always get escaping and displays weird text.

Screenshots The original text should be <h1> but it actually get rendered as image

Bistard commented 1 month ago

I asked the author of marked, and the reply is here.

After the proposal gets updated, the HTML escaping process will be moved out of the tokenizer from the marked. So that we can handle the HTML escaping process on our own.

Bistard commented 1 month ago

我简单了解了一下为什么需要HTML Escaping这个过程:

因为它防止行内代码被当作实际的HTML或JavaScript执行,避免潜在的安全隐患如跨站脚本攻击 (XSS)。例如,若用户在行内代码中输入 <script>alert('XSS');</script>,没有escaping时,浏览器会执行这个脚本,触发弹窗,造成攻击风险。但通过HTML escaping,将 < 转义为 &lt;,代码会显示为文本,避免执行。因此,escaping保护了用户的安全,防止恶意代码执行。

不过在我们的案例中, 并不需要担心此问题. 因为我们在使用prosemirror来进行富文本渲染. 每个tokenizer产出的token都会被按照不同类型在prosemirror进行渲染, 而不是直接交给浏览器让它自动渲染. 因此在上述案例中的<script>alert('XSS');</script>在没有HTML escaping的情况下, 也会被当作普通文本处理.