在CSDN上看到的一个过滤方法,感觉还不错

        /// <summary>
        /// 把字符串中包含的敏感词替换成别的关键字
        /// </summary>
        /// <param name="s">原字符串</param>
        /// <param name="oldstr">要查找的敏感词</param>
        /// <param name="newstr">替换后的关键字</param>
        /// <returns>新的字符串</returns>
        private string ChangeSubStr(string s, string oldstr, string newstr)
        {
            if (s == null || s == "")
                return "";
            //转为小写
            string s1 = s.ToLower();
            //获取第一个匹配项的索引值
            int i = s1.IndexOf(oldstr);
            //如果有匹配的(有关键字)
            while (i != -1)
            {
                //截取有敏感词之前的内容
                string l = s.Substring(0, i);
                //截取敏感词之后的内容
                string r = s.Substring(i + oldstr.Length);
                //组合成新的内容
                s = l + newstr + r;
                s1 = s.ToLower();
                i = s1.IndexOf(oldstr);
            }
            return s;
        }

        private void CheckForSQLs(HttpRequest Request, HttpResponse Response)
        {
            string[] sql = new string[] { "/*", "*/", "--", "‘", "declare", "select", "into", "insert", "update", "delete", "drop", "create", "exec", "master" };
            string[] sqlc = new string[] { "/ *", "* /", "- -", "'", "declare", "select", "into", "insert", "update", "delete", "drop", "create", "exec", "master" };

            //Form

            if (Request.Form.Count > 0)
            {
                Type type = typeof(System.Collections.Specialized.NameObjectCollectionBase);// Request.Form.GetType();
                PropertyInfo pi = type.GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
                pi.SetValue(Request.Form, false, null);

                for (int i = 0; i < Request.Form.Count; i++)
                {
                    string s = Request.Form[i];
                    //查询每个敏感词,如果字符里含有敏感词,则替换成中文类型的字符
                    for (int j = 0; j < sql.Length; j++)
                        s = ChangeSubStr(s, sql[j], sqlc[j]);
                    Request.Form.Set(Request.Form.GetKey(i), s);
                }
                pi.SetValue(Request.Form, true, null);
            }

            //QueryString
            if (Request.QueryString.Count > 0)
            {
                Type type = typeof(System.Collections.Specialized.NameObjectCollectionBase);// Request.Form.GetType();
                PropertyInfo pi = type.GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
                pi.SetValue(Request.QueryString, false, null);

                for (int i = 0; i < Request.QueryString.Count; i++)
                {
                    string s = Request.QueryString[i];
                    for (int j = 0; j < sql.Length; j++)
                        s = ChangeSubStr(s, sql[j], sqlc[j]);
                    Request.QueryString.Set(Request.QueryString.GetKey(i), s);
                }
                pi.SetValue(Request.QueryString, true, null);
            }

            //cookie
            for (int k = 0; k < Request.Cookies.Count; k++)
            {
                HttpCookie c = Request.Cookies[k];

                if (c.Values.Count > 0)
                {
                    Type type = typeof(System.Collections.Specialized.NameObjectCollectionBase);// Request.Form.GetType();
                    PropertyInfo pi = type.GetProperty("IsReadOnly", BindingFlags.Instance | BindingFlags.NonPublic);
                    pi.SetValue(c.Values, false, null);

                    for (int i = 0; i < c.Values.Count; i++)
                    {
                        string s = c.Values[i];
                        for (int j = 0; j < sql.Length; j++)
                            s = ChangeSubStr(s, sql[j], sqlc[j]);
                        c.Values.Set(c.Values.GetKey(i), s);
                    }
                    pi.SetValue(c.Values, true, null);
                }

                Response.Cookies.Set(c);
            }
        }
时间: 2024-09-30 14:13:23

在CSDN上看到的一个过滤方法,感觉还不错的相关文章

印度卖家在亚马逊上卖牛粪饼,反响竟然还不错

三名来自印度拉贾斯坦邦哥打市的年轻企业家,将其经营了15年的家族乳牛畜牧企业提升到了一个新台阶,现在正在亚马逊网站上销售牛粪饼. APEI有机食品公司的三位董事之一Amanpreet Singh称:"我们发现了这个产业的潜力.在过去三个月里,我们一直在亚马逊销售牛粪饼." 这些牛粪饼大小约是普通盘子的1/4,每打的价格为120印度卢比.目前,他们平均每周销售15批牛粪饼,每批数量500至1000个. "孟买.德里和浦那的消费反响不错."Singh说. 据了解,制作牛

php时间方法(还不错)

<?php function time2Units ($time) { $year = floor($time / 60 / 60 / 24 / 365); $time -= $year * 60 * 60 * 24 * 365; $month = floor($time / 60 / 60 / 24 / 30); $time -= $month * 60 * 60 * 24 * 30; $week = floor($time / 60 / 60 / 24 / 7); $time -= $wee

在CSDN上看见一个程序猿的随笔,感触挺深的转发一下

[聊一聊]程序猿的恶心循环 穷人的恶性循环:穷 -> 需要努力工作 -> 没有时间去交际 -> 人脉越来越狭窄 -> 工作越来越难做 -> 越需要努力去工作 -> 越没有时间去发展人脉 -> 越穷富人的良性循环:有钱 -> 工作很轻松 -> 很多时间都在交际上 -> 人脉越来越广 -> 工作越来越不用努力 -> 越有更多的时间精力去发展人脉 -> 越富有 程序员的恶性循环:加班 -> 没空学习 -> 老是写同等水平代

Android利用网络编程HttpClient批量上传(一个)

请尊重他人的劳动成果.转载请注明出处:Android网络编程之使用HttpClient批量上传文件 我曾在<Android网络编程之使用HTTP訪问网络资源>一文中介绍过HttpCient的使用,这里就不在累述了,感兴趣的朋友能够去看一下.在这里主要介绍怎样通过HttpClient实现文件上传. 1.预备知识: 在HttpCient4.3之前上传文件主要使用MultipartEntity这个类,但如今这个类已经不在推荐使用了. 随之替代它的类是MultipartEntityBuilder. 以

CSDN上看到的一篇有关Spring JDBC事务管理的文章(内容比较全) (转)

JDBC事务管理 Spring提供编程式的事务管理(Programmatic transaction manage- ment)与声明式的事务管理(Declarative transaction management),为不同的事务实现提供了一致的编程模型,这节以JDBC事务为例,介绍Spring的事务管理. 5.3.1  Spring对事务的支持 事务是一组原子(Atomic)操作的工作单元,以数据库存取的实例来说,就是一组SQL指令,这一组SQL指令必须全部执行成功,若因为某个原因未全部执行

将自己在CSDN上的文章下载到本地并上传到掘金

CSDN 算是一个老牌技术网站了,很多喜欢写文章的人,一开始都是在 CSDN上发布,但是可能由于某些原因,有的人想把自己在 CSDN上的文章放到其他的网站上(嗯,比如掘金),但是由于在 CSDN上发布的文章数量很多,一篇篇复制粘贴下来理论上是可行的,就是手酸了点. 不过,作为技术型体力劳动者人才,重复一种动作几十甚至上百遍未免有点丢失 biger,想起前段时间我花费了 大量时间 翻译的 Puppeteer,至今还没体现出其价值来,于是决定就用它了. 本文的可运行示例代码已经上传到 github了

史上最全github使用方法:github入门到精通--备用

[初识Github] 首先让我们大家一起喊一句“Hello Github”.YEAH!就是这样. Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius和Merb在内的很多知名项目都使用了Git.Git同样可以被诸如Capistrano和Vlad the Deployer这样的部署工具所使用.同样,eoe.cn客户端的源码也托管在github上. Gi

【Github教程】史上最全github使用方法:github入门到精通(转自eoeandroid.com)

本文来源:http://www.eoeandroid.com/thread-274556-1-1.html 另附经典教程网址 :http://wuyuans.com/2012/05/github-simple-tutorial/ Git是一个分布式的版本控制系统,最初由Linus Torvalds编写,用作Linux内核代码的管理.在推出后,Git在其它项目中也取得了很大成功,尤其是在Ruby社区中.目前,包括Rubinius和Merb在内的很多知名项目都使用了Git.Git同样可以被诸如Cap

运用php上传大文件配置方法

网站建设:运用php上传大文件配置方法如下: 翻开php.ini, 1.第一找出 file uploads区域,有影响文件上传的以下几个参数: file_uploads = on ;能否准许经过http上传文件的开关.默许为on即是开 upload_tmp_dir ;文件上传至服务器上存储临时文件的地方,假设没指定就会用系统默许的临时文件夹 upload_max_filesize = 8m ;望文生意,即准许上传文件大小的最大值.默许为2m 2.在resource limits区域,还有参数 ;