Удаление HTML из пользовательского ввода в Perl и Catalyst

Я использую Catalyst для своего веб-приложения Perl. Каков принятый способ удаления HTML из пользовательского ввода?

В настоящее время я склоняюсь к использованию HTML::FormatText. Но мне кажется странным, что я не могу найти встроенную в Catalyst утилиту для решения этой распространенной задачи. Я просто не нашел? Кроме того, кажется, что эти модули для удаления ввода занимают около 5 строк кода. Я надеялся на простой метод "deHTMLify()". Я думаю, что я могу катить свой собственный, но не хотел изобретать велосипед.

Я думаю, что модули проверки формы, такие как HTML::FormFU, сделают это за вас, но я надеюсь избежать этой сложности. Мои формы короткие и простые. Является ли это решение ошибочным?

Я делаю это правильно?


person Eric Johnson    schedule 03.09.2010    source источник


Ответы (2)


Я бы сказал, что вы делаете это неправильно. Правильный способ сделать это — принять текст как отправленный с сервера. Затем обработать все значения, полученные из базы данных, с помощью html или html_entities фильтра. на ваш взгляд (вероятно TT). Почему это правильный путь? Что ж, если вы не хотите поддерживать HTML сейчас, вы все равно можете взломать фильтр, чтобы позже заставить работать подмножество HTML. Это также позволяет пользователю видеть свой ввод — только что экранированный — вместо того, чтобы его лишать, тем самым теряя отслеживание того, что он отправил, и некоторую потенциально ценную информацию.

Ваш способ также, кажется, делает некоторые предположения о механизме вывода (HTML), что мне неудобно. Почему вы хотите дезинфицировать ввод только для одного выходного формата?

person Evan Carroll    schedule 03.09.2010

Я использую HTML::Scrubber, но именно здесь я хочу разрешить подмножество элементов/атрибутов.

person ysth    schedule 03.09.2010
comment
Я бы хотел, чтобы stackoverflow разрешил несколько зеленых галочек, потому что в итоге я использовал оба ваших решения в разных сценариях. - person Eric Johnson; 05.09.2010