我构建的框架允许应用程序编码器动态创建 sql(当他们需要时)。如果他们正确使用该工具,那么他们将分两步进行: 1. 使用“?”构建 sql(PreparedStatement)占位符,以及 2. 将所有用户输入的数据作为参数传递给 PreparedStatement。
这只是使用 PreparedStatement 和参数的常用方法,以避免 sql 注入。那里没什么特别的。
但是,我想多走一步:我想验证编码器是否已正确“参数化”。如果有的话,这在什么意义上是可能的?一个人可以在语法上确定'?'的所有地方吗?应该出现在 SQL 中吗?这样的工具是否已经存在?
编辑:示例:
从 x 中选择 blah,其中 a='user-data' 和 b=?
这里,a 没有被参数化,而 b 有。我想检测'a'种格式错误的sql。那有意义吗?