Лучший способ обеспечить простой Wysiwyg с PHP - PullRequest
7 голосов
/ 31 августа 2011

Я добавил простой редактор wysiwyg на мой сайт. (допускается только B / I / U - не более)
В настоящее время я храню весь контент в виде html в своей базе данных - но просто добавить <a onclick='...'> или другой вредоносный код)

Какой самый лучший способ в PHP безопасно проанализировать ввод? Как реализовать <b></b> <i></i> и т. Д. В качестве белого списка и кодировать все остальное?

Ответы [ 2 ]

12 голосов
/ 31 августа 2011

HTMLPurifier

Я просто собираюсь выбросить это и, вероятно, получить неизбежную порку.Я бы не стал использовать strip_tags для защиты вашей формы WYSIWYG ... когда-либо (если вы не хотите разозлить своих пользователей).

Это не защитит вашу форму, и вы можете убить опыт вашего пользователя.

Крис Шифтлетт в своем блоге написал отличный абзац

Я ненавижу комментировать блоги, где мой комментарий пропускается через что-то вроде strip_tags (), эффективно искажаячто я пытаюсь сказатьЭто напоминает мне об использовании IM-клиента, который пытается идентифицировать смайлики и заменять их изображениями, что часто затрудняет расшифровку ответов.

Другая причина

Кто-то другой в другом ответе также написалвот что мне нравится:

  $str = "10 appels is <than 12 apples";
  var_dump(strip_tags($str));

Вывод, который я получаю:

string '10 appels is ' (length=13)

Лично я бы не использовал что-либо , кроме HTMLPurifier

HTMLPurifier

HTMLPurifier

Попробуйте демо здесь: http://htmlpurifier.org/demo.php

И посмотрите на этот похожий вопрос

0 голосов
/ 31 августа 2011

Используйте strip_tags(). http://php.net/manual/en/function.strip-tags.php

string strip_tags (строка $ str [, строка $ allowable_tags])

Второй параметр - это список допустимых тегов; просто перечислите '<b><i><u>', а остальные будут удалены.

Обратите внимание , что, как упоминалось в deceze:

Эта функция не изменяет атрибуты тегов, которые вы разрешить использование allowable_tags, включая стиль и onmouseover атрибуты, которые злонамеренный пользователь может злоупотреблять при публикации текста, который будет показан другим пользователям.

Так что он сам по себе не обеспечивает полной защиты от вредоносного кода!

...