2016-12-05 2 views
0

Я ищу способ, чтобы предотвратить HTML изменения формы пользователя, основываясь на этом примере:Grails Предотвращение HTML модификации

«Пользователь» субъект имеет перечислимую роль (пользователь, администратор и т.д.) и есть UserController что отображает ag: форму для первой, последней и электронной почты. Действие контроллера выполняет user.properties = params.

Как пользователь может изменить форму HTML с помощью Firebug или Webdeveloper Chrome и переименовать имя поля в ролевую и ввести «Администратор» и получить права администратора.

Существует useToken = "true" и withForm-замыкание, но это просто мешает пользователю дважды отправить ту же форму. Кроме того, это работает с сеансами, и поэтому он не масштабируется на нескольких серверах.

Я использую Grails 2.3.6. Есть ли способ предотвратить такие вещи, кроме использования xxx.properties = params?

ответ

1

Вы можете указать список разрешенных объектов. Ваш пример:

user.properties['first', 'last', 'email'] = params 

Вы всегда должны предоставить список для обеспечения безопасности. Поиск в документации grails для «Связывание данных и проблемы безопасности».

+0

Спасибо за хороший ввод. Но разве нет способа гарантировать, что форма не была изменена, например. hash все имена полей? Полагаю, это не было целью использования Token, верно? – sullivan

+0

Да, вы правы. useToken будет предотвращать подделку с двумя формами-submit и кросс-сайтом. –