Разрешить недопустимые символы в текстовом поле - PullRequest
0 голосов
/ 22 ноября 2011

Я создал текстовое поле для моих пользователей, чтобы ввести свои комментарии. Поэтому иногда они копируют ошибку, которая возникла в приложении, и вставляют ее в текстовое поле вместе с комментариями. Он может содержать недопустимые символы (например, </11>), но его следует сохранить, но мой .aspx не позволяет. Я не знаю, как справиться с этим. спасибо! * * 1002

Ответы [ 4 ]

3 голосов
/ 22 ноября 2011

Я предполагаю, что вы говорите об исключительном сообщении типа "потенциально опасное значение Request.Form было обнаружено клиентом ..."

, которое является проверкой запроса asp.net в действии.это может быть отключено на уровне страницы или сайта, но с этим связаны риски.

это делается с помощью ValidateRequest = "false" в директиве страницы или в файле web.config.

дополнительная информация здесь: http://www.asp.net/learn/whitepapers/request-validation

2 голосов
/ 22 ноября 2011

Если вы хотите, чтобы пользователь редактировал TextBox и вводил HTML-теги , вы можете отключить это через

 <%@ Page validateRequest="false" ...>

или в файле web.config для всего вашего приложения:

<system.web>
  <page validateRequest="false" />
</system.web>

Обратите внимание, что это свойство ValidateRequest не существует без причины.При изменении значения по умолчанию небезопасный ввод будет принят.В связи с этим вам необходимо проверять ввод каждого пользователя, чтобы избежать атак межсайтового скриптинга, таких как вставка вредоносного JavaScript, ActiveX, Flash или HTML


Другое умное решение - заменить текст JavaScript, написанный пользователем , чтобы сделать его безопасным для проверки.
< anyword> вместо <anyword> считается безопасным!

function validateTxt() {
    $("textarea, input[type='text']").change(function () {
      html = $(this).val(); //get the value
      //.replace("a" , "b")  works only on first occurrence of "a"
      html = html.replace(/< /g, "<"); //before: if there's space after < remove
      html = html.replace(/</g, "< "); // add space after <
      $(this).val(html); //set new value
   });
}

$(document).ready(function () {
      validateTxt();
});
0 голосов
/ 22 ноября 2011

Это может быть связано с тем, что HTML-код отклонен на стороне сервера в качестве меры безопасности.

Вы можете отключить эту проверку одним из следующих способов:

Добавление следующего атрибута в заголовок страницы <%@ Page validateRequest="false" %>

или расширение приложения изменений в сети .Конфиг :

<configuration>
   <system.web>
      <pages validateRequest="false" />
   </system.web>
</configuration>
0 голосов
/ 22 ноября 2011

Вы можете попытаться закодировать содержимое в Base64 перед его передачей.Но я не уверен, что мое решение действительно хорошее.

http://nolovelust.com/post/classic-asp-base64-encoder-decoder.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...