HTMLPurifier против Kses - PullRequest
       8

HTMLPurifier против Kses

6 голосов
/ 04 апреля 2011

Каковы преимущества / недостатки обоих?

Какие из них вы бы использовали, чтобы отфильтровать комментарии, которые пользователь размещает на веб-сайте?

Ответы [ 3 ]

7 голосов
/ 04 апреля 2011

kses не обновлялись уже 7 лет - думаю, этого достаточно, чтобы сразу же вычеркнуть это из картинки.

Однако реальный вопрос таков: Вам нужно , чтобы принять ввод HTML в комментариях пользователей?

Потому что, если вы этого не сделаете, правильным решением проблемы будет использование htmlspecialchars перед тем, как вы отправите комментарии в виде HTML, и все. Больше ничего не требуется.

Даже если вам нужно разрешить пользователям форматировать свои комментарии, существуют различные альтернативные языки разметки (BBCode, MarkDown, Textile - это то, что SO использует при вводе), которые широко используются и более чем соответствуют задаче. .

Учтите, что вы даже можете создать Википедию, не принимая ввод HTML .

5 голосов
/ 04 апреля 2011

Хорошая статья, которая мне посоветовала:

Санация HTML: детали дьявола (и уязвимости)

Я использую HTMLPurifier почти во всех своих проектахпотому что с кешированием нет большого падения производительности.

0 голосов
/ 24 октября 2015

Я недавно создал порт фильтра Drupal XSS. Это продвинутая версия Kses. https://github.com/ymakux/xss

$filter = new Filter();

// List of allowed protocols
$allowed_protocols = array('http', 'ftp', 'mailto');

// List of allowed tags you want to keep in text  
$allowed_tags = array('a', 'i', 'b', 'em', 'span', 'strong', 'ul', 'ol', 'li', 'table', 'tr', 'td', 'thead', 'th', 'tbody');

$filter->addAllowedProtocols($allowed_protocols);
$filter->addAllowedTags($allowed_tags);

// Parse string
$filtered_string = $filter->xss($string);
...