根本解决办法
- SQL 文全部使用占位符实装
- SQL 里有变量的地方一般使用占位符来实装。占位符有静态和动态两种办法。使用的比较多的是静态占位符,也就是 SQL 的 ISO/JIS 标准里的 Prepared Statement。
- 连接字符串要进行转义
- 不要直接在参数里直接指定 SQL
有的网站直接在 hidden 参数里写 SQL,这是不可取的。
保险对策
- 数据库返回的错误信息不要直接显示在浏览器上
- 数据库返回的错误信息一般会有数据库种类,引发错误的 SQL 原文等信息。这些信息会被攻击者不怀好意地利用。
- 给数库账号合理的权限
只给应用所使用的数据库账号最少的权限。