Я добавил простой редактор wysiwyg на моем сайте. (он позволяет только B / I / U – не более)
В настоящее время я сохраняю весь контент как html в своей базе данных – но atm просто добавить <a onclick='...'>
или другой вредоносный код)
Как лучше всего в PHP правильно разбирать вход? Как реализовать <b></b>
<i></i>
и т. Д. Как белый список и кодировать все остальное?
Я просто собираюсь бросить это там и, вероятно, получить неизбежное наложение. Я бы не использовал strip_tags
чтобы защитить вашу форму WYSIWYG … когда-либо (если вы не хотите, чтобы вас strip_tags
).
Он не будет защищать вашу форму, и вы можете убить своих пользователей.
Крис Шрифтлетт в своем блоге написал отличный абзац
Я ненавижу комментировать блоги, где мой комментарий передается через что-то вроде strip_tags (), эффективно искажая то, что я пытаюсь сказать. Это напоминает мне об использовании IM-клиента, который пытается идентифицировать смайлики и заменять их изображениями, часто делая сообщения трудными для расшифровки.
Кто-то еще в другом ответе также написал это, что мне нравится:
$str = "10 appels is <than 12 apples"; var_dump(strip_tags($str));
Выход, который я получаю:
string '10 appels is ' (length=13)
Я лично не буду использовать ничего, кроме HTMLPurifier
HTMLPurifier
Попробуйте демонстрацию здесь: http://htmlpurifier.org/demo.php
И посмотрите на этот похожий вопрос
Используйте strip_tags()
. http://php.net/manual/en/function.strip-tags.php
string strip_tags (строка $ str [, строка $ allowable_tags])
Второй параметр – список допустимых тегов; просто перечислите '<b><i><u>'
а остальные будут удалены.
Обратите внимание, что в качестве упоминания о deceze:
Эта функция не изменяет никаких атрибутов в тегах, которые вы разрешаете использовать allowable_tags, включая атрибуты стиля и onmouseover, которые может оскорбительный пользователь может злоупотреблять при публикации текста, который будет показан другим пользователям.
Таким образом, он не обеспечивает полную защиту от вредоносного кода сам по себе!