如何防止 Showdown 删除脚本标签?

How to prevent Showdown from removing script tags?

我正在测试一些东西并试图将其放入 Showdown:

<script>alert("hacked!");</script>

当然它没有发出任何警报(摊牌是为了防止此类事情发生),但是 <script> 标签被完全删除了。我将其用于用户描述,因此脚本标签(及其内容)应该是可见的,只是不执行。

我在想我很可能需要更改一些内置的 Showdown 代码,但在它的代码中找不到任何我应该更改为 show 脚本的地方标签,但不执行它们。

有谁知道任何现有选项或对源代码的一些更改以显示这一点?

我在代码中找到了这个地方,它负责散列 HTML 标签,例如:<script></script>.

https://github.com/showdownjs/showdown/blob/a9f38b6f057284460d6447371f3dc5dea999c0a6/src/subParsers/makehtml/hashHTMLBlocks.js

我认为你应该只删除文件中的第 329 行

https://github.com/showdownjs/showdown/blob/a9f38b6f057284460d6447371f3dc5dea999c0a6/src/converter.js

一切都应该正常。

我找到了答案:我只需要用可见的东西替换 <script> 标签的开始和结束,例如 &lt;script&lt;/script&gt;

这是我使用的代码:

myshowdownhtml.split("<script").join("&lt;script").split("<"+"/script>").join("&lt;/script&gt;");