Мне нужно, чтобы мои пользователи вводили URI своего персонального веб-сайта в свой профиль, чтобы другие пользователи могли видеть и нажимать на него. Я обеспокоен тем, что это может привести к атакам XSS, если результат не будет правильно обработан.
Как в этой очень упрощенной схеме ниже:
Я использую полный стек Symfony2 framework, Doctrine как ORM и Twig в качестве механизма шаблона. Я знаю, что Symfony предоставляет некоторые удивительные инструменты проверки и что TWIG предоставляет автоматическое выходное экранирование (что не обязательно в данном конкретном случае), а также некоторые фильтры для очистки данных.
Я прочитал следующее о как очистка дескрипторов symfony2 и twig:
Доктрина поставляется с дезинфекцией для базы данных (SQL). Кроме того, нет рекомендуемых/предоставленных входной дезинфекции на уровне контроллера в Symfony2. Однако, используя Twig в просмотр, дезактивация продукции.
В качестве примера, в CakePHP:
Санитарная обработка данных реализована как Utility, которая может быть доступный из любого места (контроллер, компонент, модель.. даже просмотр). Это следует подходе с использованием санитарии-все-ввода с фиксированным набором предопределенных фильтры санитарии. Санирование конкретных материалов с помощью специальных правил возможно, но, похоже, его не поощряют. Существующие правила сосредоточиться на SQL и HTML-инъекциях и отфильтровывать общие подозрительные символы Unicode.
1 Как пользователи symfony2 + twig
обрабатывают входную санитацию? Они полностью отбрасывают санитарию ввода и, например, полагаются только на проверку? Или они пишут свою собственную функцию полезности для фильтрации пользовательских входов? или, возможно, использовать библиотеку, например owasp-esapi-php?
2 Как пользователи symfony2 + twig
обрабатывают обработку данных? Они полагаются только на фильтры, предоставляемые двигателем ветки? Например, существуют ли какие-либо инструменты, которые можно использовать для дезинфекции введенного пользователем URI, что-то похожее на это?
3 В этой ситуации, как бы вы обрабатывали хранилище базы данных и отображали введенный пользователем URI, как в приведенном выше примере, вы вообще не заботитесь о дезинфекции ввода? или вы используете только санацию на выходе и сохраняете URI как есть?