读书人

paip.Answer 3.0 登记功能SQL注入漏洞

发布时间: 2012-09-28 00:03:35 作者: rapoo

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扫描,漏洞消失...

读书人网 >网络基础

热点推荐