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

.net中特殊字符的处理,以及录入超出数据库字段长度是怎么处理了

如题:征集大家的解决方案,1.对特殊字符的处理;2.文本录入超出数据库中对应字段长度,大家如何处理。本人对特殊的字符的处理时html编码部分特殊字符,对未处理的字符在Page_Error中catch 异常HttpRequestValidationException,并给出提示。对超出数据库中对应字段的长度问题一般是SubString。 --------------------编程问答-------------------- 问题不清楚。。。 --------------------编程问答-------------------- 当文本超过数据库对应字段长度,这叫做溢出,很危险的,貌似有一种黑客攻击手段就是通过溢出进行的 --------------------编程问答-------------------- 怕超出,就设置控件的maxlength,如果每个都写 SubString,太“费事”了,而且对客户来说效果不好
特殊字符就进行编码或者replace掉 --------------------编程问答-------------------- 1.对特殊字符转义、编码或参数化处理
2.在录入前就做输入限制

substring少用点 --------------------编程问答-------------------- 输入的控件上限制长度,程序里超出的截取 --------------------编程问答--------------------
引用 4 楼 mngzilin 的回复:
1.对特殊字符转义、编码或参数化处理
2.在录入前就做输入限制

substring少用点
mark --------------------编程问答--------------------
引用 3 楼 wyqlxy 的回复:
怕超出,就设置控件的maxlength,如果每个都写 SubString,太“费事”了,而且对客户来说效果不好
特殊字符就进行编码或者replace掉
,当文本框为多行时,就设置控件的maxlength不太好使吧 --------------------编程问答--------------------  #region/// 过滤html,js,css代码
    ///  
    /// 过滤html,js,css代码 
    ///  
    /// 参数传入 
    ///  
    public static string CheckStr(string html)
    {
        System.Text.RegularExpressions.Regex regex1 = new System.Text.RegularExpressions.Regex(@"", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        System.Text.RegularExpressions.Regex regex2 = new System.Text.RegularExpressions.Regex(@" href *= *[\s\S]*script *:", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        System.Text.RegularExpressions.Regex regex3 = new System.Text.RegularExpressions.Regex(@" no[\s\S]*=", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        System.Text.RegularExpressions.Regex regex4 = new System.Text.RegularExpressions.Regex(@"", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        System.Text.RegularExpressions.Regex regex5 = new System.Text.RegularExpressions.Regex(@"", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        System.Text.RegularExpressions.Regex regex6 = new System.Text.RegularExpressions.Regex(@"\]+\>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        System.Text.RegularExpressions.Regex regex7 = new System.Text.RegularExpressions.Regex(@" 
", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        System.Text.RegularExpressions.Regex regex8 = new System.Text.RegularExpressions.Regex(@" 
", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        System.Text.RegularExpressions.Regex regex9 = new System.Text.RegularExpressions.Regex(@"<[^>]*>", System.Text.RegularExpressions.RegexOptions.IgnoreCase);
        html = regex1.Replace(html, ""); //过滤标记 
        html = regex2.Replace(html, ""); //过滤href=javascript: () 属性 
        html = regex3.Replace(html, " _disibledevent="); //过滤其它控件的on...事件 
        html = regex4.Replace(html, ""); //过滤iframe 
        html = regex5.Replace(html, ""); //过滤frameset 
        html = regex6.Replace(html, ""); //过滤frameset 
        html = regex7.Replace(html, ""); //过滤frameset 
        html = regex8.Replace(html, ""); //过滤frameset 
        html = regex9.Replace(html, "");
        html = html.Replace(" ", "");
        //html = html.Replace("", "");
        //html = html.Replace("", "");
        return html;
    }
    #endregion
    #region
    ///  
    /// 过滤p /p代码 
    ///  
    /// 参数传入 
    ///  
    public static string InputStr(string html)
    {
        html = html.Replace(@"\]+\>", "");
        //html = html.Replace(@" ", "");
        //html = html.Replace(@" ", "");
        return html;
    }
    #endregion
    /// <summary>
    /// 截取字符串
    /// </summary>
    /// <param name="str">要处理的字符串</param>
    /// <param name="length">要截取的长度</param>
    /// <returns></returns>
    public static string GetLength(string str, int length)
    {
        string strR = str;
        if (str.Length > length)
        {
            strR = str.Substring(0, length) + "...";
        }
        return strR;
    } --------------------编程问答-------------------- up --------------------编程问答-------------------- 1.对特殊字符的处理
特殊字符只是針對與写入数据库(可能是XML/DataBase)而言的,這一類字符需要進行替換動作/转义处理
2.文本录入超出数据库中对应字段长度,大家如何处理。
首先客户端JS+正则限制
再者在后台进行长度的Check,不建议使用substring

引用楼主 shunliy 的回复:
如题:征集大家的解决方案,1.对特殊字符的处理;2.文本录入超出数据库中对应字段长度,大家如何处理。本人对特殊的字符的处理时html编码部分特殊字符,对未处理的字符在Page_Error中catch 异常HttpRequestValidationException,并给出提示。对超出数据库中对应字段的长度问题一般是SubString。
--------------------编程问答-------------------- 在传参的时候给定大小,超出的部分程序自动截取了 --------------------编程问答-------------------- 文本录入超出数据库中对应字段长度:客户端加验证 --------------------编程问答-------------------- 改成二进制再存入。 --------------------编程问答-------------------- 特殊字符一般只需要处理单引号即可

超出数据库长度一般采用界面限制,在某些特殊条件下,可以采用后台的substring(效率影响不大),但需要对截断的数据进行日志记录,以防止用户在截断数据后无法找到原有的记录。

而页面中的特殊字符输出,可以在后台使用Server.HtmlEncode --------------------编程问答-------------------- 从输出时开始限长度。。。。特殊字符。。用replace换过来。。。 --------------------编程问答--------------------
引用 6 楼 zhulong1111 的回复:
引用 4 楼 mngzilin 的回复:
1.对特殊字符转义、编码或参数化处理
2.在录入前就做输入限制

substring少用点
mark


嗯嗯
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,