Отсутствие примера экранирования специальных символов в Struts2 - PullRequest
1 голос
/ 15 апреля 2010

Погуглив сегодня, я не смог найти пример или упоминание о лучшей практике: как избежать пользовательского ввода в Struts2. Конечно, я могу вручную конвертировать символы в методе validate (), но это выглядит слишком очевидно. Так может быть существует какая-то автоматизация, чтобы избежать внедрения кода / скрипта?

1 Ответ

0 голосов
/ 15 апреля 2010

Есть базовая особенность / хорошая практика: свойство тег по умолчанию экранирует специальные символы html, так что пока вы сохраняете эту фильтрацию (см. Escape и escapeJavascript «атрибуты), вы в полной безопасности - в этом отношении.

Для более общего случая проверки всего пользовательского ввода в вашем веб-приложении (что, теоретически, вы могли бы сделать расширением перехватчика параметров или созданием другого перехватчика или фильтра), редко можно установить какое-либо общее правило (какие символы / шаблоны запрещены?) и что делать (молча стирать их или выдавать какую-либо ошибку / предупреждение проверки?).

Возможно, вы думаете о более конкретном случае пользовательских вводов, которые должны отображаться на веб-странице (обычно комментарии пользователей) и которые могут принимать ограниченный набор HTML-тегов. В этом случае я бы имел дело с этими полями, в частности, возможно, написав некоторый код служебного дезинфицирующего средства и подключив его к соответствующим установщикам или получателям. Более сложным решением было бы определить свой собственный класс (скажем, UserComment) для этих полей - класс в основном обернул бы строку, а затем я написал бы соответствующий преобразователь типов , который принимает ответственность за очистку. Опять же, вы должны решить, какое действие предпринять в случае запрещенных символов / тегов.

...