Как удалить пользовательские теги из текста в отправленной HTML-форме, используя PHP / Perl? - PullRequest
0 голосов
/ 24 февраля 2011

У меня есть форма для отправки новостей. Я хочу, чтобы он был защищен от XSS и т. Д., Удалив все HTML-теги. Тогда я буду конвертировать все другие теги с этим форматом

[tagname attributes][/closetagname]

К этому

<tagname attributes></closetagname>

. Вопрос в том, как мне выполнить преобразование тегов в этот формат.

Ответы [ 4 ]

2 голосов
/ 25 февраля 2011

Вы не будете защищены от XSS, просто " удаляя все html-теги " и " преобразует все остальные теги ".Борьба с XSS работает только с помощью белого списка некоторых известных тегов (и белого списка некоторых известных атрибутов ), в то время как черный список всегда будет сбоем.Вот более полное объяснение .

Хорошим решением для очистки кода HTML в PHP является использование Очиститель HTML .

2 голосов
/ 24 февраля 2011

Ну, если вы используете PHP, я думаю, что комбинация встроенного strip_tags () и расширения PHP bbcode должна делать то, что вам нужно.

0 голосов
/ 24 февраля 2011
<?php
$string = '<tagname attributes></closetagname>';
$clean = str_replace(array('<','>'),array('[',']'), $string);
echo $clean; //[tagname attributes][/closetagname]
?>

Конечно, это заменит все экземпляры <и>.

0 голосов
/ 24 февраля 2011
<?php
$text = '[tagname attributes][/closetagname]';
$text = preg_replace('/\[([^\[]+?)\]/', '<$1>', $text);
echo $text;
?>

При условии, что вы не получаете [и] внутри тегов.

...