对数据库结果的任意用户定义约束

时间:2013-04-23 14:37:13

标签: php mysql database constraints

在一个调查框架中,用户输入(即“询问”调查问题,而不回答它们)是相当可信的,我的前任用几乎直接从用户定义的约束构建MySQL查询(即没有做太多关于恶意SQL注入的可能性,因为SQL注入是预期的结果。)

在大多数情况下,这些约束类似于跳过此问题,如果sex = 1将转换为类似

的查询

SELECT IF(sex = 1) AS test FROM Survey1 WHERE user_id = 12

在更复杂的情况下,约束可能是
Survey1.agreed = 1 OR (Survey2.age < 50 AND Survey2.age > 18) OR Survey3.number_of_children IN(2,3,5,7)  他必须在那里建立连接等,以支持无限的复杂性和嵌套。

显然,有很多方法让用户几乎指定查询的WHERE部分可能出错,即使恶意用户很少见。
他试图自己解决这些约束,但是由于复杂的情况表现得非常糟糕,最终他采用了不安全但快速的方法。

对于这个问题,什么是安全的,有点高效的解决方案?

0 个答案:

没有答案