2014-09-11 5 views
-1

Я отправляю текстовый блок из представления в контроллер для системы сообщений.MVC Изменить объект между представлением и контроллером

Есть ли способ поймать сообщение, прежде чем он попадет на контроллер, каким-то образом изменит его (например, удалите любые ненужные вещи , как элементы HTML), а затем пусть контроллер получит его?

Цель состоит в том, чтобы остановить A potentially dangerous Request.Form value was detected без изменения параметров проверки.

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

+0

Лучший способ отправить данные с помощью ajax ... это предупреждение, которое приходит в вашем случае, приходит .. когда мы пытаемся опубликовать html-теги из представления в контроллер –

+0

Я действительно надеялся держаться подальше от любого ответа JS – TheGeekZn

+2

Well без изменения клиентской стороны (ajax) .. По-моему, вы не можете этого сделать, но вы можете использовать такие атрибуты, как [AllowHtml] или [ValidateInput (false)], чтобы предотвратить предупреждение, которое приходит в вашем случае. –

ответ

0

Целью сообщения A potentially dangerous Request.Form value was detected является не допускать опасного впрыска в ваш код.

Перед сохранением можно либо разрешить все HTML, либо отклонить опасные инъекции или кодировать значения.

Если вы решили разрешить все HTML использовать [AllowHtml] помощник

--или--

Если вы хотите, чтобы предотвратить опасное использование инъекционного сценария,

[ValidateInput(true)] 
[HttpPost] 
public ActionResult SomeAction(FormCollection collection) 
{ 

} 

--или--

Используйте специальный атрибут для кодирования всех значений с использованием метода Server.HtmlEncode

Ex: Server.HtmlEncode("<script>unsafe</script>"); перед сохранением.

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