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

问题描述

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

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

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

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

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

解决方法

我在代码中找到了这个地方,它负责散列 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;");