Как предотвратить удаление тегов скрипта Showdown?

#javascript #showdown

#javascript #showdown

Вопрос:

Я что-то тестировал и пытался поместить это в Showdown:

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

Конечно, это ничего не предупредило (Showdown создан для защиты от подобных вещей), но <script> тег удаляется полностью. Я использую это для описания пользователя, поэтому тег скрипта (и его содержимое) должен быть видимым, просто не выполняться.

Я думал, что, скорее всего, мне нужно будет изменить какой-то встроенный код Showdown, но не смог найти в нем места, которое я должен изменить, чтобы показывать только теги скрипта, но не выполнять их.

Кто-нибудь знает какие-либо существующие параметры или некоторые изменения в исходном коде, чтобы показать это?

Ответ №1:

Я нашел это место в коде, и оно отвечает за хэширование тегов 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

И все должно работать.

Комментарии:

1. Хммм, не могу этого найти. Я использую Showdown версии v1.9.1

2. Найти text = showdown.subParser('hashHTMLBlocks')(text, options, globals); в строке 320 в файле src/converter.js и удалите его.

3. Я пытался, но не могу его найти. У меня есть только один файл, showdown.min.js . Загружено с showdownjs.com

4. showdown.min.js это файл, который сокращен, т. Е. Содержит Весь исходный код в одном файле. Вы должны использовать версию, не уменьшенную, которая содержит чистый исходный код вместе со всеми каталогами.

5. Где я могу найти этот код в уменьшенном файле? Мне не нужна вся папка с исходным кодом, и после удаления одной строки нужно снова свести ее к одному файлу.

Ответ №2:

Я нашел ответ: мне просто нужно было заменить начало и конец <script> тегов чем-то видимым, например amp;<script , и amp;</scriptamp;>

Это код, который я использовал:

 myshowdownhtml.split("<script").join("amp;<script").split("<" "/script>").join("amp;</scriptamp;>");