公司网站优化小记

公司网站是用.net写的,对于一个对.net毫无研究的人来说,要优化,简直无从下手,公司网站老是被黑,我是这样做的。

1.做个测试,确定是sql注入。

2.网上查下sql注入屏蔽方法,主要查到这几个。

(1)屏蔽错误信息,即在客户端浏览器内输入错误信息导致无法正常显示,通常开发时为了调试方便,但是正式环境是要修改的。修改web.config的<customErrors mode="RemoteOnly" defaultRedirect="mycustompage.htm"/>同时在根路径下建立mycustompage.htm页面,页面上九写点静态提示信息就可以了。

(2)在页面每次提交时判断url是否包含非法字符,搞过几年的javaEE的我大概会想到,每次页面提交时先判断,类似于拦截器,或者像jsp那样include一个页面,由于jsp本身就是一个servlet,所以可以每次提交的时候先判断,如果不合法,既返回错误信息。抱着这个想法,查啊查,网上说.net里面有个global.asax的页面,好像有个Application_BeginRequest,具体是什么原理我就不清楚了。使用下,但是找遍了我的项目目录也没找到这个文件,于是就想新建一个,到网上下个编辑器,什么vs2010,下好了,加上去,怎么也没反应,调试了一天,找不到原因,结果第二天过来,可以了,晕死,估计有个地方要重启吧,但是我重启服务了额,具体什么原因,不清楚。

下面是我的判断方法:

<%@ Application Language="C#" %>

<script runat="server">

        void Application_BeginRequest(object sender, EventArgs e)
        {

            //SQL防注入
            string Sql_1 = "and|or|join|exec|insert+|select+|delete+|update+|count|chr|mid|master+|truncate|char|declare|drop+|drop+table|creat+|creat+table";
            string Sql_2 = "exec+|insert|insert+|delete+|update+|count(|count+|chr+|+mid(|+mid+|+master+|truncate+|char+|+char(|declare+|drop+|creat+|drop+table|creat+table";
            string[] sql_c = Sql_1.Split('|');
            string[] sql_c1 = Sql_2.Split('|');

            if (Request.QueryString != null)
            {
                foreach (string sl in sql_c)
                {
                    if (Request.QueryString.ToString().ToLower().IndexOf(sl.Trim()) >= 0)
                    {
                        Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");//
                        Response.Write(sl);
                        Response.Write(Request.QueryString.ToString());
                        Response.End();
                        break;
                    }
                }
            }


            if (Request.Form.Count > 0)
            {
                string s1 = Request.ServerVariables["SERVER_NAME"].Trim();//服务器名称
                if (Request.ServerVariables["HTTP_REFERER"] != null)
                {
                    string s2 = Request.ServerVariables["HTTP_REFERER"].Trim();//http接收的名称
                    string s3 = "";
                    if (s1.Length > (s2.Length - 7))
                    {
                        s3 = s2.Substring(7);
                    }
                    else
                    {
                        s3 = s2.Substring(7, s1.Length);
                    }
                    if (s3 != s1)
                    {
                        Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");//
                        Response.End();
                    }
                }
            }
           
        }


    void Application_Start(object sender, EventArgs e)
    {
       
        //在应用程序启动时运行的代码
       // Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");
    }
   
    void Application_End(object sender, EventArgs e)
    {
        //在应用程序关闭时运行的代码
      // Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");
    }
       
    void Application_Error(object sender, EventArgs e)
    {
        //在出现未处理的错误时运行的代码
      // Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");
    }

    void Session_Start(object sender, EventArgs e)
    {
       // Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");

    }

    void Session_End(object sender, EventArgs e)
    {
       // Response.Write("警告!你的IP已经被记录!不要使用敏感字符!");
        //在会话结束时运行的代码。
        // 注意: 只有在 Web.config 文件中的 sessionstate 模式设置为
        // InProc 时,才会引发 Session_End 事件。如果会话模式
        //设置为 StateServer 或 SQLServer,则不会引发该事件。

    }
      
</script>

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值