Я тестирую редактор WMD, подобный тому, который используется здесь, на SO, чтобы разрешить разметку при вводе пользователем. Я применяю HTMLPurifier к входным данным, и он очищает все плохие теги. Однако, как и SO, я также хочу разрешить образцы кодаlike this (backticks)
like this (indentation)
and even like this (with pre and code tags)
однако, если пользователь помещает в образец какой-то неприятный код, например:
<script>alert("annoy");</script>
HTMLPurifier удаляет его.
Как я могу разрешить любой ввод данных пользователем для примеров кода с помощью HTMLPurifier?
Я видел этот другой вопрос, но ответ просто
preg_replace_callback()
? Вы не знакомы с CDATA? Вы не уверены, где вам следует преобразовывать блоки кода в блоки CDATA в потоке кода? Кроме того, как выглядит код, который уничтожает HTML Purifier? Поскольку вы работаете с WYSIWYG, вы можете столкнуться с этой проблемой: stackoverflow.com/a/34962904/245790 - person pinkgothic   schedule 20.08.2016preg_replace_callback
для экранирования литералов, и это работает, но это выглядит как небезопасный способ сделать это, интересно, есть ли у htmlpurifier какая-либо конфигурация, которая позволяет что-либо (например, вредоносный код) внутри тегов (которые также могут быть обратными кавычками или просто отступом). И да, я не знаком с CDATA. - person M.M   schedule 20.08.2016<code>...</code>
, и замените их блоками<code><![CDATA[...]]></code>
(вещи, обозначенные...
, вообще не меняются). . Затем приступайте к очистке. - person pinkgothic   schedule 21.08.2016htmlspecialchars()
в HTML, прежде чем помещать его в WYSIWYG<textarea>
. Если вы не экранируете HTML перед тем, как поместить его в<textarea>
, измените свой код так, чтобы он экранировал его. Это не только необходимо, но и может решить проблему с кодовыми блоками! Смотрите ответ, который я связал в моем первом комментарии для объяснения. - person pinkgothic   schedule 21.08.2016htmlspecialchars()
- person M.M   schedule 21.08.2016