MVC过滤整个项目输入关键字

简介:

第1步骤.新建过滤关键字实现类:ProcessRequest

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.Threading;

using System.Web;

using System.Web.UI;

using System.Web.UI.WebControls;

using System.Web.UI.WebControls.WebParts;

using System.Web.UI.HtmlControls;

using SaaS.Admin.Base;


namespace SaaS.Admin.Controllers

{

    public class ProcessRequest

    {

        public void ProcessCheckkeyWord()

        {

            #region 过滤URL提交过来的参数【检查是否存在关键字】


            string[] keywors = { "javascript", "vbscript", "jscript", "script", "eval", "<", ">", "\'", "\"", "&", "#" };

            string returnUrl="/";//url地址

            try

            {

                string httpmethodType = System.Web.HttpContext.Current.Request.HttpMethod;

                if (httpmethodType != "")

                {

                    string haskeyword = "";

                    if (httpmethodType.ToLower() == "get")

                    {

                        System.Collections.Specialized.NameValueCollection geturlparm = System.Web.HttpContext.Current.Request.QueryString;

                        if (System.Web.HttpContext.Current.Request.UrlReferrer != null) // 

                        {

                            returnUrl = System.Web.HttpContext.Current.Request.UrlReferrer.PathAndQuery.ToString();

                        }

                        int counts = geturlparm.AllKeys.Count();

                        string[] urlparms = geturlparm.AllKeys;

                        if (counts > 0 && urlparms.Length > 0)

                        {

                            for (int i = 0; i < urlparms.Length; i++)

                            {

                                string parmvalue = System.Web.HttpContext.Current.Request.QueryString[i];//对应参数值

                                for (int j = 0; j < keywors.Length; j++)

                                {


                                    if (parmvalue != "" || !string.IsNullOrEmpty(parmvalue))

                                    {

                                        if (parmvalue.IndexOf(keywors[j].ToLower()) != -1)

                                        {

                                            haskeyword = haskeyword + keywors[j] + ",";

                                        }

                                    }

                                }

                            }

                        }

                        if (haskeyword != "")

                        {

                            string newkeyws = "";

                            if (haskeyword.EndsWith(","))

                            {

                                haskeyword = haskeyword.Substring(0, haskeyword.Length - 1);

                                #region 过滤掉重复出现的关键字符串

                                string[] keyws = haskeyword.Split(',');

                               

                                if (keyws.Length > 0)

                                {

                                    keyws = keyws.ToList().Distinct().ToArray();//过滤掉重复的字符


                                    for (int i = 0; i < keyws.Length; i++)

                                    {

                                        if (i == 0)

                                        {

                                            newkeyws = keyws[i];

                                        }

                                        else

                                        {

                                            newkeyws = newkeyws + "," + keyws[i];

                                        }

                                    }

                                }

                                newkeyws = newkeyws.Replace("\'", "'").

                                    Replace("\"", """);//把\'单引号,\"双引号修改为中文的单双引号


                                #endregion

                            }

                            string script = "<script>window.alert('参数存在不安全字符');" + " </" + "script>";


                            string strScript = "<script charset='utf-8' Language=Javascript>if( confirm('参数存在不安全字符:" + newkeyws + "') ) {window.history.back(-1); } else { window.history.back(-1);}</script>";

                            StringBuilder sb = new StringBuilder();

                            sb.Append("<html>");

                            sb.Append("<head>");

                            sb.Append("<meta charset=\"utf-8\" />");

                            sb.Append(strScript);

                            sb.Append("</head>");

                            sb.Append("</html>");


                            System.Web.HttpContext.Current.Response.Write(sb.ToString());

                            System.Web.HttpContext.Current.Response.End();

                        }

                    }

                    else if (httpmethodType.ToLower() == "post")

                    {

                        System.Collections.Specialized.NameValueCollection urlparm = System.Web.HttpContext.Current.Request.Form;


                        if (System.Web.HttpContext.Current.Request.UrlReferrer != null) // 

                        {

                            returnUrl = System.Web.HttpContext.Current.Request.UrlReferrer.PathAndQuery.ToString();

                        }



                        int counts = urlparm.AllKeys.Count();

                        string[] urlparms = urlparm.AllKeys;

                        if (counts > 0 && urlparms.Length > 0)

                        {

                            for (int i = 0; i < urlparms.Length; i++)

                            {

                                string parmvalue = System.Web.HttpContext.Current.Request.Form[i];//对应参数值


                                for (int j = 0; j < keywors.Length; j++)

                                {


                                    if (parmvalue != "" || !string.IsNullOrEmpty(parmvalue))

                                    {

                                        if (parmvalue.IndexOf(keywors[j].ToLower()) != -1)

                                        {

                                                haskeyword = haskeyword + keywors[j] + ",";

                                        }

                                    }

                                }

                            }

                        }

                        if (haskeyword != "")

                        {

                            if (haskeyword.EndsWith(","))

                            {

                                haskeyword = haskeyword.Substring(0, haskeyword.Length - 1);

                                #region 过滤掉重复出现的关键字符串

                                string[] keyws = haskeyword.Split(',');

                                string newkeyws = "";

                                if (keyws.Length>0)

                                {

                                    keyws = keyws.ToList().Distinct().ToArray();//过滤掉重复的字符


                                    for (int i = 0; i < keyws.Length; i++)

                                    {

                                        if (i == 0)

                                        {

                                            newkeyws = keyws[i];

                                        }

                                        else

                                        {

                                            newkeyws =newkeyws+ "," + keyws[i];

                                        }

                                    }

                                }

                                newkeyws = newkeyws.Replace("\'", "'").

                                    Replace("\"", """);//把\'单引号,\"双引号修改为中文的单双引号

                        

                                #endregion


                                string strScript = "<script charset='utf-8' Language=Javascript>if( confirm('参数存在不安全字符:" + newkeyws + "') ) {window.history.back(-1); } else { window.history.back(-1);}</script>";

                                StringBuilder sb=new StringBuilder();

                                sb.Append("<html>");

                                    sb.Append("<head>");

                                        sb.Append("<meta charset=\"utf-8\" />");

                                        sb.Append(strScript);

                                    sb.Append("</head>");

                                sb.Append("</html>");


                                System.Web.HttpContext.Current.Response.Write(sb.ToString());

                                System.Web.HttpContext.Current.Response.End();


                                //System.Web.HttpContext.Current.Response.Write("<script charset='utf-8' Language=Javascript>if( confirm('" + GetBytesKeyWord + "" + newkeyws + "') ) {document.location.href='" + returnUrl + "'; } else { document.location.href='" + returnUrl + "' }</script>");

                                //System.Web.HttpContext.Current.Response.End();

                            }

                        }

                    }

                    else if (httpmethodType.ToLower() == "head")

                    {

                        System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('参数存在不安全字符');window.location = '" + returnUrl + "';</script>");

                        System.Web.HttpContext.Current.Response.End();

                    }

                    else

                    {

                        System.Web.HttpContext.Current.Response.Write("<script language=javascript>alert('参数存在不安全字符');window.location = '" + returnUrl + "';</script>");

                        System.Web.HttpContext.Current.Response.End();

                    }

                }

            }

            catch (Exception)

            {

                

                throw;

            }

      


            #endregion

        }


    }

}





第2步骤.在页面  Global.asax  》Global.asax.cs 》 调用ProcessRequest:ProcessCheckkeyWord()

 protected void Application_BeginRequest(object sender, EventArgs e)

        {

            #region //整个项目过滤关键字

            ProcessRequest process = new ProcessRequest();

            process.ProcessCheckkeyWord();

            #endregion

        }


这样所有的页面输入框有关键字输入都进行过滤提示!!

本文转自程序猿博客51CTO博客,原文链接http://blog.51cto.com/haihuiwei/1956312如需转载请自行联系原作者


365850153

相关文章
|
前端开发 Java 数据库
MVC项目导入
MVC项目导入
44 0
|
21天前
|
存储 前端开发 数据可视化
在实际项目中,如何选择使用 Flux 架构或传统的 MVC 架构
在实际项目中选择使用Flux架构或传统MVC架构时,需考虑项目复杂度、团队熟悉度和性能需求。Flux适合大型、高并发应用,MVC则适用于中小型、逻辑简单的项目。
|
1月前
|
设计模式 前端开发 Java
Spring MVC——项目创建和建立请求连接
MVC是一种软件架构设计模式,将应用分为模型、视图和控制器三部分。Spring MVC是基于MVC模式的Web框架,通过`@RequestMapping`等注解实现URL路由映射,支持GET和POST请求,并可传递参数。创建Spring MVC项目与Spring Boot类似,使用`@RestController`注解标记控制器类。
37 1
Spring MVC——项目创建和建立请求连接
|
1月前
|
前端开发 Java 应用服务中间件
【Spring】Spring MVC的项目准备和连接建立
【Spring】Spring MVC的项目准备和连接建立
57 2
|
3月前
|
前端开发 Java 测试技术
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
单元测试问题之在Spring MVC项目中添加JUnit的Maven依赖,如何操作
|
6月前
|
前端开发 JavaScript Java
springboot 出现 Cannot resolve MVC View ‘index‘ 问题解决办法,前后端不分离项目前端文件存放位置,已经如何访问
springboot 出现 Cannot resolve MVC View ‘index‘ 问题解决办法,前后端不分离项目前端文件存放位置,已经如何访问
743 1
|
消息中间件 前端开发 Java
GitHub标星30k!基于Spring MVC Mybatis分布式开发系统-zheng项目
zheng项目不仅仅是一个开发架构,而是努力打造一套从 前端模板 - 基础框架 - 分布式架构 - 开源项目 - 持续集成 - 自动化部署 - 系统监测 - 无缝升级 的全方位J2EE企业级开发解决方案。
|
消息中间件 前端开发 Java
GitHub标星30k!基于Spring MVC Mybatis分布式开发系统-zheng项目
前言 zheng项目不仅仅是一个开发架构,而是努力打造一套从 前端模板 - 基础框架 - 分布式架构 - 开源项目 - 持续集成 - 自动化部署 - 系统监测 - 无缝升级 的全方位J2EE企业级开发解决方案。
114 0
|
存储 前端开发 安全
SpringBoot项目中MVC使用--【JSB系列之010】
SpringBoot项目中MVC使用--【JSB系列之010】