Есть форум и размещение HTML запрещено.
Однако некоторые пользователи хотели бы иметь возможность публиковать некоторые символические знаки, шестнадцатеричные html-объекты, такие как:
💗
Увидеть: http://graphemica.com/%F0%9F%92%97 для получения дополнительной информации.
Мои вопросы:
&
или же »
и так далее, так что просто html-сущности, начинающиеся с &# и затем число плюс точка с запятой в конце.Есть идеи, как это решить?
Другой ответ — использовать метод .text jQueries, чтобы добавить сообщение в элемент сообщения вашего форума.
Хотя вам придется изменить то, как ваш форум создает структуру сообщений.
Вы можете безопасно добавлять любую последовательность символов, и ни один из них не будет интерпретироваться браузером как HTML.
Пример:
$('#message_text').text(naughty_msg_string);
Безопасно ли вообще разрешать им такие символы (XSS и т. Д.)?
Нет, это никогда не безопасно. Например, &
это просто удобный псевдоним для &
, который до сих пор амперсанд. так же <
является знаком меньше, и, следовательно, «наивно» разрешая числовые HTML-сущности, все еще может открыть поверхность атаки XSS, если вы забудете об этом во время обработки.
Вы можете рассмотреть вопрос о разрешении только числовых символов за пределами основной таблицы ASCII (128+), что было бы более безопасно.
Какую функцию лучше использовать, чтобы разрешить это? На самом деле символические HTML-объекты отображаются в виде простого текста.
Учитывая вышеупомянутую функцию, preg_replace_callback
является хорошим кандидатом, так как он позволяет вам протестировать контент перед тем, как разрешить его.
Это также отвечает на третий вопрос, так как вы можете просто проверить числа в регулярном выражении.