问题描述:经测试发现,该网站存在查询页面,未对输入数据进行过滤,导致产生sql注入。
受影响的URL:http://www.ccxcn.com/wzzz/20150915/105617.shtml
受影响参数:k
验证过程:
请求数据包 |
POST /slist.cshtml HTTP/1.1 Content-Length: 82 Content-Type: application/x-www-form-urlencoded X-Requested-With: XMLHttpRequest Referer:http://www.ccxcn.com/wzzz/20150915/105617.shtml Cookie:ASP.NET_SessionId=wtc4hdfmkdwqratoipuz21ec;VerifyCod |
风险程度:【严重】
风险分析:利用该SQL注入漏洞,恶意攻击者可以获取数据库内的所有数据,并且可能获取数据库所承载的操作系统更多信息,对系统威胁非常严重。
sql注入的解决方法
SQL注入的主要原因是程序没有严格过滤用户输入的数据,导致非法数据侵入系统。
1) 对用户输入的特殊字符进行严格过滤,如’、”、<、>、/、*、;、+、-、&、|、(、)、and、or、select、union。
2) 使用参数化查询(PreparedStatement),避免将未经过滤的输入直接拼接到SQL查询语句中。
3) Web应用中用于连接数据库的用户与数据库的系统管理员用户的权限有严格的区分(如不能执行drop等),并设置Web应用中用于连接数据库的用户不允许操作其他数据库。
4) 设置Web应用中用于连接数据库的用户对Web目录不允许有写权限。使用Web应用防火墙。