注入漏洞

注入漏洞(SQL、命令等)通常指用户绕过后台代码限制,直接在数据库、shell 内执行自定义代码。

常见的注入漏洞有:

SQL 注入

SQL 注入是指 Web 程序代码中对于用户提交的参数未做有效过滤就直接拼接到 SQL 语句中执行,导致参数中的特殊字符打破了 SQL 语句原有逻辑,黑客可以利用该漏洞执行任意 SQL 语句。

开发建议:

  1. 使用数据库提供的参数化查询来进行数据库操作,不允许直接通过拼接字符串的方式来合成 SQL 语句。
  2. 如果存在部分情况需要通过拼接的方式来合成 SQL,拼接的变量必须要经过处理:
    • 对于整数,需要判断变量是否为整数类型。
    • 对于字符串,需要对单引号、双引号等做转义处理。
  3. 避免 Web 应用显示 SQL 的报错信息。
  4. 保证 Web 应用里每一数据层的编码统一。

命令注入

命令注入漏洞是指 Web 应用未对用户可控参数进行有效过滤,攻击者可以构造恶意参数拼接到命令上来执行任意命令。

开发建议:

  • 对用户输入的数据(如 ;、|、&等)进行过滤或转义。