前端: 使用参数化,对各类入库数据进行检查,屏蔽关键字,框架是否具有防止sql注入的检查要清楚。
后端: 使用框架的方法录入数据库,禁止物理删除方法,传参检查,避免使用sql拼接,对外禁止使用sql拼接,对内需记录详细操作日志。在中间层对数据库进行修改和删除(逻辑删除)操作时,对所拼接的sql和入参需要进行检查,可用正则或者自己写方法。
数据库: 设置数据库权限,面对普通用户,需要做到禁止删除,内部用户禁止物理删除,原则上只允许修改状态。如特殊情况需要使用存储过程。
不要使用动态sql:最好使用准备好的语句和参数化查询 不要将敏感数据保留在纯文本中:加密存储在数据库中的私密数据 限制数据库权限:将用户权限调至最低 避免向用户直接显示数据库错误:统一404报错 对访问数据库的web应用程序使用web应用程序防火墙(WAF) 定期测试与数据库交互的web应用程序 将数据库更新为最新的可用修复补丁