我正在使用CodeIgniter开发一个项目,其中显示的页面包含一个选项列表,其中包含页面上显示数据的可用查询(SELECT
语句)。这些查询存储在MySQL表中,包括用户定义的查询。
我的问题是,处理所选查询执行的最佳方法是什么:
使用query命令从表(view_id
键)获取SQL语句。替换返回的SQL语句中的参数。使用query命令执行SQL语句。
加载页面时,将SQL语句存储在一个数组中(可能很大)。当用户更改页面上的选择时,从数组中获取语句,替换语句中的参数,运行查询。
使用MySQL预编译语句。 (预见参数存在问题,因为所有视图都需要相同的参数序列)
其他选择?
我正在寻找一种既有效又安全的方法。
谢谢
答案 0 :(得分:0)
第一个 - 不要暴露任何你的SQL - 你只是在寻找麻烦。
您希望将用户输入与正在运行的实际代码分开。设置ti就像它是一个用户可能拥有的正常事物的链接列表 - 例如,个人资料,帐户设置等。
解析sql注入的输入,实际运行该查询的权限等等。
换句话说,将其设置为您站点中页面名称的简单列表 - 完全忽略他正在选择sql语句