zoukankan      html  css  js  c++  java
  • paip.Answer 3.0 注册功能SQL注入漏洞解决方案

    paip.Answer 3.0 注册功能SQL注入漏洞解决方案

    作者Attilax , 1466519819@qq.com
    今天使用WebInspect 9.20扫描网站漏洞,我的网站系统是Answer 3.0 ,发现SQL注入漏洞
    影响功能:注册时AJAX检测用户名重复功能。以及注册功能..

    修改如下:

    1.checkaccount.aspx.cs中GetResult()方法增加TRY----CATCH结构
    File
    dsukateo/share/checkaccount.aspx.cs

      protected string GetResult()
        {
            string Result = "";

            string Account = xParmeter.GetValidParam("Account");
            try
            {
                ...............
            }
            catch (Exception ex)
            {
                Result = ex.Message;
            }   

            return Result;
        }


    2.ECustom.ChkAccount()  修改,增加一个用户名检查器和一个SQL过滤器
       public bool ChkAccount(int id, string Account)
        {
            ati L9.20  sql inject fix
            unameChecker c = new unameChecker();
            c.checkEx(Account);        
            Account = m.SqlFilter.filt(Account);
            //  //end
            string SQL = "SELECT id FROM Custom WHERE Account='" + Account + "'";
    .............
    }


    3.实现用户名检查器

    public class unameChecker
    {
     public unameChecker()
     {
      //
      //TODO: 在此处添加构造函数逻辑
      //
     }
        public void checkEx(string uname)
        {
            if (uname.Length >= 20)
                throw new Exception("EL919:用户账号太长,请小于20位");
            if (!check(uname))             
                throw new Exception("EL9191:用户账号不符合规则,应该是英文字母加数字或者邮箱格式");
        
            
        }

        public bool check(string str)    
    {      
          System.Text.RegularExpressions.Regex   reg1    
                                      =   new   System.Text.RegularExpressions.Regex(@"^[A-Za-z0-9@\.]+$");
          return   reg1.IsMatch(str);  
    }


    4.实现SQL过滤器

        public class SqlFilter
        {
            public SqlFilter()
            {
                //
                //TODO: 在此处添加构造函数逻辑
                //
            }

            public static string filt(string sql)
            {
                sql = sql.Replace("'", "''");
                // sql = sql.Replace("%", "'%");
                return sql;
            }
        }


    再次使用WebInspect扫描,漏洞消失...

  • 相关阅读:
    Linux下修改Apache即httpd的端口
    jenkins.JenkinsException: Error in request. Possibly authentication failed
    jenkins-python 获取正在运行的Job
    通过python-jenkins 获取job的输出日志
    电子公文传输系统团队项目
    接口重复请求报错问题排查
    创建couchbase的bucket 提示RAM不够用 all the ram in the cluster is already allocated to existing bucekets,delete some buckets,,
    tornado重定向的几种方式
    tornado进行登录案例
    tornado设置cookie和查看cookie,含加密
  • 原文地址:https://www.cnblogs.com/attilax/p/15199804.html
Copyright © 2011-2022 走看看