2012-02-12 4 views
6

У меня есть текстовое поле, где пользователь может написать статью. Статья может содержать текст (жирный и курсив), ссылки и видеоролики YouTube. Как разрешить эти определенные теги html и по-прежнему отправлять безопасный код, предотвращающий xss?Как разрешить определенные теги html?

ответ

11

Я хотел бы использовать HTMLPurifier, чтобы убедиться, что вы только сохранить HTML

  • Это справедливо
  • и содержит только теги и атрибуты вы выбрали, чтобы позволить


Я должен добавьте, что PHP предоставляет функцию strip_tags(), но это не так хорошо (котировочный):

Поскольку strip_tags() на самом деле не проверяет HTML, частично или сломанные теги могут привести к удалению большего количества текста/данных, чем ожидалось.

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

+0

+1 для цитирования strip_tags() notes –

+0

Thx! Похоже, htmlpurifier - путь. Просто для уточнения; htmlpurifier предотвращает инъекции xss, sql и все другие опасные коды? – Michael

+1

Я использовал его несколько раз, чтобы очистить ввод пользователя и убедиться, что он содержит только те теги, которые я выбрал для разрешения; если вы тщательно выберете допустимые теги/атрибуты, это предотвратит XSS. Но он ничего не сделает с SQL Injections: это еще одна проблема, которую вы решите, убедившись, что вы поставили в SQL-запросы, безопасно * (целые числа должны быть целыми числами, строки должны быть надлежащим образом экранированы, ... или вы должны используйте подготовленные операторы) * –

1

Если вы ищете настоящую защиту XSS, я предлагаю использовать HTMLPurifier. Сделать это самостоятельно довольно сложно, если не невозможно. И должен иметь ошибки (/ дыры) в нем.

Смежные вопросы