2013-03-14 5 views
0

Я получаю эту ошибку «Потенциально опасное значение Request.Form было обнаружено у клиента» при тестировании ввода, отправленного пользователем на сервер через jQuery ajax. Это происходит только тогда, когда я намеренно помещаю одиночную, двойную кавычку, html-символы во входные данные ex "<s"c'o<>" как мое имя пользователя. но все же я хочу, чтобы изящно кодировать и декодировать любой плохой ввод, который пользователь пытается ввести.asp.net mvc ajax error

здесь на стороне клиента Jquery

var email = encodeURIComponent($('#loginEmail').val()); 
    var password = encodeURIComponent($('#loginPassword').val()); 

    $.ajax({ 
     async: false, 
     url: 'Account/CheckLogin', 
     dataType: 'JSON', 
     contentType: 'application/json', 
     data: { 
      email: email, 
      password: password 
     }, 
     success: function (resp) { 
      alert(resp.valid); 
      if (resp.valid == "false") { 
       isValid = false; 
       $('.errorspan').show(); 
      } 
     } 
    }); 

код контроллера действительно не является существенным, так как ошибка возникает, прежде чем она когда-либо попадает точка разрыва первой линии. Кажется, Asp.net поймал это, пытаясь быть переданным как ajax, прежде чем я получу шанс обработать код. Мой вопрос: почему это происходит с encodeUriComponent()?

+5

Каждый раз, когда кто-то набирает '$ .ajax ({async: false ...' милый маленький кролик умирает где-то, может быть, больше ... – kidwon

+1

Мне абсолютно необходимо это сделать, это одно время, извините за все bunnies –

+0

ваш звонок должен быть получен? Может быть, это сообщение? –

ответ

1

Необходимо отключить проверку запроса на стороне сервера, см., Например, here.

Что касается того, почему это происходит? Microsoft в основном сделала предположение, что любому, кто не знает, как отключить проверку запроса, также нельзя доверять данные, которые могут быть вредными, если они перенаправлены в базу данных и возвращены на страницу без учета кодировки. Наверное, это спасло много людей от себя на протяжении многих лет. URI-кодировка не «скрывает» «опасный» ' от .NET, по крайней мере в Firefox.

+0

Отключение проверки не решает проблему, это оборачивает ее, делая приложение менее безопасным. – Jason

+0

Это по своей сути не делает приложение менее безопасным, оно просто переносит ответственность за безопасность из структуры разработчику. URI-кодирование данных не делает его менее опасным, чем это не делает, даже если он действительно работает, чтобы избавиться от проблемы, а это не так. Потенциальная опасность заключается в том, что вы делаете с данными после того, как у вас есть это в незарегистрированной форме, и это то же самое, было ли оно передано прямо или закодировано первым, а затем декодировано. – MattW

+0

Передача ответственности перед людьми имеет тенденцию быть менее защищенной. – Jason