首页 > 解决方案 > 在构造 SELECT 时避免 SQL 注入

问题描述

我想避免 SQL 注入。我通过简化我正在处理的问题来发布问题。

客户想要查看表中的一组列。它传递表名和列列表。客户端通过安全的 API 知道表名和所有可能的列列表。

在服务器上,我正在使用表名和传递的列列表构建一个 SELECT 查询。

我不能使用视图。

为了避免 SQL 注入,这是我打算做的。

  1. 检查传递的列是否是所有可能的列列表的一部分。
  2. 检查列是否包含任何字符,如 =、-、+ 以避免任何安全问题。

我在这里错过了什么吗?

标签: javasqlsecuritysql-injection

解决方案


查询目录以检查输入的表名是否确实存在于数据库中。(同样用于检查输入的列名是否真的是命名表的列。)


推荐阅读