【问题标题】:How to prevent Showdown from removing script tags?如何防止 Showdown 删除脚本标签?
【发布时间】:2021-04-15 03:50:46
【问题描述】:

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

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

当然它没有提醒任何东西(摊牌是为了防止这些事情发生),但是&lt;script&gt; 标签被完全删除了。我将其用于用户描述,因此脚本标签(及其内容)应该是可见的,只是没有执行。

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

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

【问题讨论】:

    标签: javascript showdown


    【解决方案1】:

    我在代码中找到了这个地方,它负责散列 HTML 标签,例如:&lt;script&gt;&lt;/script&gt;

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

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

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

    一切都应该正常。

    【讨论】:

    • 嗯,找不到。我正在使用 Showdown v1.9.1
    • 在文件 src/converter.js 的第 320 行找到 text = showdown.subParser('hashHTMLBlocks')(text, options, globals); 并删除他。
    • 我试过了,但找不到。我只有一个文件 showdown.min.js。下载自showdownjs.com
    • showdown.min.js 是一个被缩小的文件,即将整个源代码包含在一个文件中。您必须使用包含纯源代码和所有目录的非缩小版本。
    • 我在哪里可以找到缩小文件中的代码?我不想要整个源代码文件夹,删除一行后必须再次将其缩小为一个文件。
    【解决方案2】:

    我找到了答案:我只需要将 &lt;script&gt; 标记的开头和结尾替换为可见的内容,例如 &amp;lt;script&amp;lt;/script&amp;gt;

    这是我使用的代码:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2010-11-27
      • 2020-02-11
      • 1970-01-01
      • 2013-11-15
      • 1970-01-01
      • 1970-01-01
      • 2019-06-27
      相关资源
      最近更新 更多