注入漏洞(SQL、命令等)通常指用户绕过后台代码限制,直接在数据库、shell 内执行自定义代码。
常见的注入漏洞有:
SQL 注入
SQL 注入是指 Web 程序代码中对于用户提交的参数未做有效过滤就直接拼接到 SQL 语句中执行,导致参数中的特殊字符打破了 SQL 语句原有逻辑,黑客可以利用该漏洞执行任意 SQL 语句。
开发建议:
- 使用数据库提供的参数化查询来进行数据库操作,不允许直接通过拼接字符串的方式来合成 SQL 语句。
- 如果存在部分情况需要通过拼接的方式来合成 SQL,拼接的变量必须要经过处理:
- 对于整数,需要判断变量是否为整数类型。
- 对于字符串,需要对单引号、双引号等做转义处理。
- 避免 Web 应用显示 SQL 的报错信息。
- 保证 Web 应用里每一数据层的编码统一。
命令注入
命令注入漏洞是指 Web 应用未对用户可控参数进行有效过滤,攻击者可以构造恶意参数拼接到命令上来执行任意命令。
开发建议:
- 对用户输入的数据(如 ;、|、&等)进行过滤或转义。