苏苏
注入漏洞

什么是引发 SQL 注入漏洞的主要原因

分享
  • Simon 2 风险管理(专业级)RM/PL CICSA
    Simon2 风险管理(专业级)RM/PL CICSA

    引发SQL注入的原因

    程序开发过程中不注意书写规范,对sql语句和关键字未进行过滤,导致客户端可以通过全局变量get或者post提交sql语句到服务器端正常运行。

    SQL注入漏洞防范

    1 )严格检查输入变量的类型和格式对于整数参数,加判断条件:不能为空、参数类型必须为数字对于字符串参数,可以使用正则表达式进行过滤:如:必须为[0-9] [a-z] [A-Z]范围内的字符串

    2 )过滤和转义特殊字符在 username 这个变量前进行转义,对’、”、等特殊字符进行转义

    3 )利用 mysql 的预编译机制

  • 房乐 2 CISAW CISP-PTE
    房乐2 CISAW CISP-PTE

    sql注入的原因,表面上说是因为拼接字符串,构成sql语句,没有使用sql语句预编译,绑定变量。但是更深层次的原因是,将用户输入的字符串,当成了“sql语句”来执行。也有部分SQL注入是因为不当的类型处理、不安全的数据库配置、不合理的查询集处理、不当的错误处理、转义字符处理不合适、多个提交处理不当等原因产生的,其本质是将用户的输入数据作为命令来执行了。

    sql 注入防范措施有以下这些:

    • 把应用服务器的数据库权限降至最低,尽可能地减少 SQL 注入攻击带来的危害

    • 避免网站打印出SQL错误信息,比如类型错误、字段不匹配等,把代码里的SQL语句暴露出来,以防止攻击者利用这些错误信息进行SQL注入。

    • 对进入数据库的特殊字符(’’尖括号&*;等)进行转义处理,或编码转换。

    • 所有的查询语句建议使用数据库提供的参数化查询接口,参数化的语句使用参数而不是将用户输入变量嵌入到SQL语句中,即不要直接拼接SQL语句。

    • 在测试阶段,建议使用专门的 SQL 注入检测工具进行检测。网上有很多这方面的开源工具,例如sqlmap、SQLninja等。

    • 善用数据库操作库,有些库包可能已经做好了相关的防护,我们只需阅读其文档,看是否支持相应的功能即可。

  • 写回答