允许在文本框中使用非法字符

时间:2011-11-22 11:54:32

标签: c# asp.net validation httpwebrequest

我为用户创建了一个文本框来输入他们的评论。因此,有时他们会复制应用程序中引发的错误并粘贴到文本框中以及注释。它可能包含非法字符(例如</11>)但应该保存但我的.aspx不允许。我不知道如何处理这个问题。谢谢!

4 个答案:

答案 0 :(得分:3)

我假设您正在谈论一条异常消息,例如“从客户端检测到有潜在危险的Request.Form值...”

这是运行中的asp.net请求验证。这可以在页面或站点级别禁用,但这样做存在风险。

在页面指令或web.config中使用ValidateRequest =“false”完成。

此处提供更多信息: http://www.asp.net/learn/whitepapers/request-validation

答案 1 :(得分:2)

如果您希望用户编辑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();
});

答案 2 :(得分:0)

您可以尝试在传输之前对Base64中的内容进行编码。但我不确定我的解决方案是否真的很好。

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

答案 3 :(得分:0)

这可能是由于HTML被拒绝服务器端,作为安全预防措施。

您可以通过以下方式禁用此检查:

将以下属性添加到页眉<%@ Page validateRequest="false" %>

或在 Web.Config

中更改应用程序
<configuration>
   <system.web>
      <pages validateRequest="false" />
   </system.web>
</configuration>