1.漏洞描述:web程序对于用户提交的参数未作过滤就直接放到sql语句中执行,导致参数中的特殊字符破坏了语句的原有逻辑,从而黑客可以执行任意的查询语句,比如查数据,下载数据,写shell,命令执行一级绕过登陆限制。

    2.防御方法: (
    1 )所有的查询语句都使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变 量嵌入到 SQL 语句中。当前几乎所有的数据库系统都提供了参数化 SQL 语句执行接口,使用此接口可以 非常有效的防止 SQL 注入攻击。
    ( 2 )对进入数据库的特殊字符( ‘ <>&*; 等)进行转义处理,或编码转换。
    ( 3 )确认每种数据的类型,比如数字型的数据就必须是数字,数据库中的存储字段必须对应为 int 型。
    ( 4 )数据长度应该严格规定,能在一定程度上防止比较长的 SQL 注入语句无法正确执行。
    ( 5 )网站每个数据层的编码统一,建议全部使用 UTF-8 编码,上下层编码不一致有可能导致一些过滤 模型被绕过。
    ( 6 )严格限制网站用户的数据库的操作权限,给此用户提供仅仅能够满足其工作的权限,从而最大限度 的减少注入攻击 对数据库的危害。
    ( 7 )避免网站显示 SQL 错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行 一些判断

    3.bp和sqlmapper联动自己操作一下