#javascript #showdown
#javascript #showdown
Вопрос:
Я что-то тестировал и пытался поместить это в Showdown:
<script>alert("hacked!");</script>
Конечно, это ничего не предупредило (Showdown создан для защиты от подобных вещей), но <script>
тег удаляется полностью. Я использую это для описания пользователя, поэтому тег скрипта (и его содержимое) должен быть видимым, просто не выполняться.
Я думал, что, скорее всего, мне нужно будет изменить какой-то встроенный код Showdown, но не смог найти в нем места, которое я должен изменить, чтобы показывать только теги скрипта, но не выполнять их.
Кто-нибудь знает какие-либо существующие параметры или некоторые изменения в исходном коде, чтобы показать это?
Ответ №1:
Я нашел это место в коде, и оно отвечает за хэширование тегов HTML, таких как: <script>
или </script>
.
Я думаю, вам следует удалить только строки 329 в файле
И все должно работать.
Комментарии:
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;>");