sql注入攻击如何防御?不同的数据库版本、类型均可产生千差万别效果。由于篇幅限制,我们无法一一列举所有的案例。
因此,这里重点对SQL注入漏洞的原理进行分析。SQL注入的产生原因通常有以下几点:
1)参数处理问题:
● 对用户参数进行了错误的类型处理。
● 转义字符处理环节产生遗漏或可被绕过。
2)服务配置问题:
● 不安全的数据库配置。
● Web应用对错误的处理方式不当。
■ 不当的类型处理。
■ 不安全的数据库配置。
■ 不合理的查询集处理。
■ 不当的错误处理。
■ 转义字符处理不当。
■ 多个提交处理不当。
可见,任何环节处理不当,均可能产生SQL注入漏洞。通俗地说,计算机没有人脑那么智能,无法自动识别用户提交的SQL查询内容的真实目的。
因此,只能利用以下传统手段来避免SQL注入漏洞。
1)采用黑名单、白名单等形式对用户提交的信息进行过滤,一旦发现用户参数中出现敏感的词或者内容,则将其删除,使得执行失败。
2)采用参数化查询方式,强制用户输入的数据为参数,从而避免数据库查询语句被攻击者恶意构造。
每种防护手段的使用均需付出一定代价,表现为:影响当前系统性能、降低用户的业务体验等。无论采用哪种防护方法,都要与业务实际情况结合,采用适合、有效的措施进行防护。后文将会讨论“适合”“有效”的含义。