风险分析
攻击者试图通过构建特殊的输入从客户端“注入”SQL 语句到应用程序,将SQL命令注入到数据层输入,从而影响执行预定义的SQL 命令。达到从数据库中获取敏感数据、修改数据库数据、执行数据库管理操作、恢复存在于数据库文件系统中的指定文件内容,甚至对操作系统发布命令的目的。
处理建议 首先需确认攻击源和目标主机所处网络位置,对于内网向外发起的攻击行为,建议通过对源主机进行访问限制阻止攻击行为;
对于来自外部的攻击行为,建议对用户输入的数据进行严格的检查、对数据库配置使用最小权限原则。
1、所有的查询语句都使用数据库提供的参数化的语句,而不是将用户输入变量嵌入到SQL语句中。
2、对进入数据库的特殊字符('""&*;等)进行转义处理,或编码转换。
3、严格限制变量类型使用。
4、数据长度应该严格规定,能在一定程度上防止比较长的SQL注入语句。
5、严格限制网站用户的数据库的操作权限,最大限度的减少注入攻击对数据库的危害。
6、避免网站显示SQL错误信息,比如类型错误、字段不匹配等,防止攻击者利用这些错误信息进行判断。
7、禁止把敏感性数据在数据库里以明文存放。
8、提高应用程序的开发人员的安全意识,加强对代码安全性的控制,在服务端正式处理之前对每个被提交的参数进行合法性检查,从根本上解决注入问题。 |