防止用户输入SQL上的SQL注入?

时间:2015-08-15 17:09:23

标签: php mysql sql-server codeigniter sql-injection

我正在制作学校Web应用程序,用于测试用户的SQL知识,他们必须以textarea格式输入SQL查询并在服务器mySQL上执行。我遇到的问题是我无法对未知的动态查询(由用户输入)执行预准备语句或绑定或白名单,这会使应用程序SQL注入容易受到攻击。

如何在不影响最终比较结果的情况下阻止对此类查询进行SQL注入(允许SELECT,DELETE,INSERT,UPDATE)?

也许我错过了一些可以做到这一点的PHP函数?或者我必须创建一个SQL解析器,它将检查用户查询可能的SQL注入?我不是想做任何花哨的事情,我只需要为我的应用程序提供基本的保护。

我使用CodeIgniter作为框架,但我认为这不会改变任何东西。

当用户可以输入

等查询时,如何使用PDO,语句,白名单和其他技术
 select * from user where some_column = some_value (this is just example)

或查询

select * from user LEFT JOIN ..... having something > 5 ORDER by some_column

我无法预测他们的输入,所有可能的组合都可能包含注射漏洞。

我收到的是$_POST['SQL_user_query'],其中包含SQL查询字符串,我无法使用它准备好的语句。

编辑:我想要的是防止用户使用我的数据库做破坏性的事情并获取有关表的信息,因为在他们提交查询后,Web应用程序也将在输入textarea下显示查询的结果如果他们注射可以显示敏感信息。

0 个答案:

没有答案