如果在页面控件输入<Br>等字符,提交过程中就会报错。
如果设置[ValidateInput(false)] //取消客户端数据过滤,服务器就不会进行过滤,但是不进行过滤安全行有不行,现在想自定义一个过滤器,对页面进行过滤,或者使用系统过滤器,添加设置错误页(错误代码)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(); 


在MVC中我不知道这个代码如何添加??如果能添加页面错误处理那么问题也就好处理了!

解决方案 »

  1.   

    用System.Web.HttpUtility.HtmlEncode对提交的参数进行编码,<br>会被编码成"&lt;br&gt;"安全性上就不会有问题了。
      

  2.   


    /// <summary>
    /// 移除Html标记
    /// </summary>
    /// <param name="content"></param>
    /// <returns></returns>
    public static string RemoveHtml(string content)
    {
    string regexstr = @"<[^>]*>";
    return Regex.Replace(content, regexstr, string.Empty, RegexOptions.IgnoreCase);
    }

    /// <summary>
    /// 过滤HTML中的不安全标签
    /// </summary>
    /// <param name="content"></param>
    /// <returns></returns>
    public static string RemoveUnsafeHtml(string content)
    {
        content = Regex.Replace(content, @"(\<|\s+)o([a-z]+\s?=)", "$1$2", RegexOptions.IgnoreCase);
                content = Regex.Replace(content, @"(script|frame|form|meta|behavior|style)([\s|:|>])+", "$1.$2", RegexOptions.IgnoreCase);
                return content;}以上代码参考下 ..
    你可以在  过滤器 上 判断  有 恶意代码 就跳转到一个 erorr 页面 不就可以了吗