asp.net禁用请求验证

 

asp.net禁用请求验证

 

在网页中录入信息并提交时,因为录入信息中可能含有物殊字符或html代码,这样网页就可能会提示出错.

常见错误信息如下:
从客户端(TextBox1="<INPUT TYPE=TEXT>")中检测到有潜在危险的 Request.Form 值。
说明: 请求验证过程检测到有潜在危险的客户端输入值,对请求的处理已经中止。该值可能指示危及应用

程序安全的尝试,如跨站点的脚本攻击。通过在 Page 指令或 配置节中设置 validateRequest=false 可

以禁用请求验证。但是,在这种情况下,强烈建议应用程序显式检查所有输入。


常用的解决方法就是禁用请求验证,但这样一来,就必须在程式中自行验证。

1.静止页面的validateRequest

<%@ Page validateRequest="false"  %>

2.设置web.config

 <configuration>
  <system.web>
    <pages validateRequest="false" />
  </system.web>
</configuration>

3.使用Server.HtmlEncode方法来验证

  string urlPage = "";
        urlPage = UrlText.Text;
        WebRequest request = WebRequest.Create(urlPage);
        WebResponse response = request.GetResponse();
        Stream resStream = response.GetResponseStream();
        StreamReader sr = new StreamReader(resStream, System.Text.Encoding.Default);
        ContentHtml.Text = Server.HtmlEncode(sr.ReadToEnd());
        resStream.Close();
        sr.Close();


4.允许了部分HTML标签,并禁止危险的标签。
void submitBTn_Click(object sender, EventArgs e)
  {
    // 将输入字符串编码,这样所有的HTML标签都失效了。
    StringBuilder sb = new StringBuilder(
                            HttpUtility.HtmlEncode(htmlInputTxt.Text));
    // 然后我们选择性的允许<b> 和 <i>
    sb.Replace("&lt;b&gt;", "<b>");
    sb.Replace("&lt;/b&gt;", "");
    sb.Replace("&lt;i&gt;", "<i>");
    sb.Replace("&lt;/i&gt;", "");
    Response.Write(sb.ToString());
  }
根据微软提供的建议,我们要慎重允许下列HTML标签,因为这些HTML标签都是有可能导致跨站脚本攻击的

<applet>
<body>
<embed>
<frame>
<script>
<frameset>
<html>
<iframe>
<img>
<style>
<layer>
<link>
<ilayer>
<meta>
<object>

参考:
http://www.zjqgjx.com/gjf/html/Technique/200711/20071112751400.html
http://access911.net/index.asp?board=4&recordid=71FAB51E15DCE7F3
http://support.microsoft.com/default.aspx?scid=kb;en-us;821343&Product=aspnet
http://www.hackhome.com/InfoView/Article_157127.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值