java - 在构造 SELECT 时避免 SQL 注入
问题描述
我想避免 SQL 注入。我通过简化我正在处理的问题来发布问题。
客户想要查看表中的一组列。它传递表名和列列表。客户端通过安全的 API 知道表名和所有可能的列列表。
在服务器上,我正在使用表名和传递的列列表构建一个 SELECT 查询。
我不能使用视图。
为了避免 SQL 注入,这是我打算做的。
- 检查传递的列是否是所有可能的列列表的一部分。
- 检查列是否包含任何字符,如 =、-、+ 以避免任何安全问题。
我在这里错过了什么吗?
解决方案
查询目录以检查输入的表名是否确实存在于数据库中。(同样用于检查输入的列名是否真的是命名表的列。)
推荐阅读
- php - 在while循环中求和值
- android - 如果没有动作,如何抓住仍然在按钮上的手指?
- android - 使 textView 中的一些单词可点击
- python - 如何将 numpy.nan 替换为 -1(在一行代码中)?
- java - 具有可选返回类型的 JavaBean 内省
- swift - 尝试使用 swift 获取天气数据 - JSON OpenWeatherMap api
- azure - 迭代不存在的 Azure 资源管理器 (ARM) 对象属性?
- asp.net-core-2.0 - AspNetCore 防伪和提琴手
- node.js - 使用 Nodejs 的 Firebase 内存泄漏
- c# - 如何获得下一个点位置?