当前位置:编程学习 > C#/ASP.NET >>

从客户端()中检测到有潜在危险的 Request.Form 值——前台如何编码——后台如何替换

     我的网页前台提供一个富文本编辑器,允许用户从Word或者网页,直接复制文本粘贴到富文本编辑器中,提交到服务器。
然后提交后,就发生了:“从客户端()中检测到有潜在危险的 Request.Form 值”这个错误。
我知道这是由于微软在aspx中引入了安全验证的缘故,网上说的:
==============================================
解决方案一: 
   在.aspx文件头中加入这句: 
   <%@ Page validateRequest="false" %>
eg:<%@ Page Language="C#" AutoEventWireup="false" ValidateRequest="false" CodeFile="你的页面.vb" Inherits="你的页面" %>

   解决方案二: 
   修改web.config文件: 
   <configuration> 
   <system.web> 
   <pages validateRequest="false" /> 
   </system.web> 
   </configuration> 
   因为validateRequest默认值为true。只要设为false即可。 
-------------------------------------------------------------

这些我都知道。但是这样网站就会不安全,所以我想知道在前台如果对输入内容自动编码,然后在后台替换。
对http请求,还是理解不够,不知道如何下手。
求高手指教下,给说说怎弄? --------------------编程问答--------------------
protected void Page_Error(object sender, EventArgs e)


{


Exception ex = Server.GetLastError();


if (HttpContext.Current.Server.GetLastError() is HttpRequestValidationException)


{


HttpContext.Current.Response.Write("请输入合法的字符串【<a href=\"javascript:history.back(0);\">返回</a>】");


HttpContext.Current.Server.ClearError();


}


}
用这样的吧,你查的2种方法没有安全性。 --------------------编程问答--------------------
引用 1 楼 yuyanxing09 的回复:
protected void Page_Error(object sender, EventArgs e)


{


Exception ex = Server.GetLastError();


if (HttpContext.Current.Server.GetLastError() is HttpRequestValidationException)


{


HttpContext.Current.Response.Write("请输入合法的字符串【<a href=\"javascript:history.back(0);\">返回</a>】");


HttpContext.Current.Server.ClearError();


}


}
用这样的吧,你查的2种方法没有安全性。


-------------------------------------
我不能用这种方法,我的前台是富文本编辑器,肯定有所谓的“非法字符”比如<br/><i><img><strong>等等,所以我不能不让他输入啊。 --------------------编程问答--------------------
引用 2 楼 tong386166552 的回复:
Quote: 引用 1 楼 yuyanxing09 的回复:

protected void Page_Error(object sender, EventArgs e)


{


Exception ex = Server.GetLastError();


if (HttpContext.Current.Server.GetLastError() is HttpRequestValidationException)


{


HttpContext.Current.Response.Write("请输入合法的字符串【<a href=\"javascript:history.back(0);\">返回</a>】");


HttpContext.Current.Server.ClearError();


}


}
用这样的吧,你查的2种方法没有安全性。


-------------------------------------
我不能用这种方法,我的前台是富文本编辑器,肯定有所谓的“非法字符”比如<br/><i><img><strong>等等,所以我不能不让他输入啊。


这些都不要的话还用什么富文本编辑器? --------------------编程问答--------------------
引用 3 楼 ltcszk 的回复:
Quote: 引用 2 楼 tong386166552 的回复:

Quote: 引用 1 楼 yuyanxing09 的回复:

protected void Page_Error(object sender, EventArgs e)


{


Exception ex = Server.GetLastError();


if (HttpContext.Current.Server.GetLastError() is HttpRequestValidationException)


{


HttpContext.Current.Response.Write("请输入合法的字符串【<a href=\"javascript:history.back(0);\">返回</a>】");


HttpContext.Current.Server.ClearError();


}


}
用这样的吧,你查的2种方法没有安全性。


-------------------------------------
我不能用这种方法,我的前台是富文本编辑器,肯定有所谓的“非法字符”比如<br/><i><img><strong>等等,所以我不能不让他输入啊。


这些都不要的话还用什么富文本编辑器?

恩我是新手,感觉你这样是正确的。
那我应该怎么样,在哪里过滤富文本编辑器的非法输入呢? --------------------编程问答-------------------- 前台输入前  进行编码    传到后台    某些字符 asp.net后台的安全机制会提示从客户端()中检测到有潜在危险的  


我之前的处理方式是  1、先对用户前台输入进行编码  2、特殊字符串用指定字符替换、、   --------------------编程问答-------------------- 通过JS在提交前判断非法字符,存在则不能提交。。 --------------------编程问答-------------------- 在.aspx文件头中加入这句: 
   <%@ Page validateRequest="false" %> --------------------编程问答--------------------
引用 4 楼 tong386166552 的回复:
恩我是新手,感觉你这样是正确的。
那我应该怎么样,在哪里过滤富文本编辑器的非法输入呢?

你先要搞清楚什么是危险字符,为什么会有危险?
如果你认为<br/><i><img><strong>这些都会对你网站产生危险的话,那么你就不应该用富文本编辑器,因为它就是用来生成这些tag的 --------------------编程问答-------------------- 看看这里    http://www.cnblogs.com/JosephChen/archive/2010/11/06/1870833.html

你还发过同样的贴对吧? --------------------编程问答-------------------- http://bbs.csdn.net/topics/390671602?page=1#post-396390639 --------------------编程问答-------------------- 没事的...别担心,很多人都这么用.. --------------------编程问答--------------------
引用 11 楼 diaodiaop 的回复:
没事的...别担心,很多人都这么用..


什么意思,那我也得检查呀。 --------------------编程问答--------------------
引用 9 楼 t101lian 的回复:
看看这里    http://www.cnblogs.com/JosephChen/archive/2010/11/06/1870833.html

你还发过同样的贴对吧?


恩,是的。
谢谢你,这么热心。万分感谢。
你给的资料,看了有用。不过我的好像不能用参数什么避免。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,