2015-06-11 4 views
2

Я понимаю, что если пользователю необходимо предоставить HTML-код как часть ввода формы (например, в текстовом поле), я использую политику Anti-Samy для фильтрации опасного HTML-кода это не разрешено.Как очистить значения формы, чтобы разрешить только текст

Однако у меня есть текстовые поля и текстовые области, которые должны быть текстовыми. В эти поля не нужно вставлять код HTML вообще.

Я стараюсь, таким образом, дезинфицировать входные данные так, чтобы в базу данных был вставлен только сырой текст. Я считаю, что могу сделать это двумя способами:

  1. Используйте выражение регулярных выражений, чтобы отфильтровать HTML-код, например. #REReplaceNoCase(FORM.InputField, "[^a-zA-Z\d\s:]", "", "ALL")#
  2. Используйте строгий текст только Анти-Samy политика

Какой вариант является правильным/надлежащей практике способ, чтобы удалить любой пользователь, введенный HTML код из текстового поля. Или доступны ли дополнительные варианты?

+1

1) https://www.owasp.org/index.php/Don%E2%80%99t_Write_Your_Own_Security_Code:_The_OWASP_Enterprise_Security_API 2) хорошо ... вы понимаете. –

ответ

0

Хотя вы можете использовать AntiSamy для этого, я не знаю, насколько это разумно. Думаю, что Kinda поражает цель своей гибкости. Мне было бы интересно узнать, накладные расходы, даже если они минимальны, для запуска этого фильтра как только регулярное выражение.

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

reReplace(string, "<[^>]*>", "", "ALL"); 
+0

Я не так хорошо знаком с Regex, но я думал, что делаю отрицание. Поэтому в основном я просил CF заменить любой символ, который не является символом слова (a-z) и не является цифрой (0-9), а не пробелом (\ s). Не будет ли это работать, как я себе представлял? –

+0

Я тоже не профессионал, но ваше текущее регулярное выражение удаляет только скобки и специальные символы. Скажем, у вас есть строка «hello» ... Вы получите «bhellob». Я привел пример вашего регулярного выражения и моего здесь: https://gist.github.com/cfchef/3f8ecc2fae8b1272a11b Вы можете запустить код на cflive.net, чтобы увидеть его в действии или попробовать эту ссылку http://trycf.com/editor/gist/3f8ecc2fae8b1272a11b/acf11, хотя TryCF.com, похоже, для меня в данный момент. –

+0

Вы правы, спасибо за это –

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

  • Нет связанных вопросов^_^