2015-02-06 11 views
1

我需要允许用户在我的Web应用程序中输入SQL select语句;这些select语句将用于在自定义下拉列表中生成选项。允许用户在Web应用程序中输入SQL select语句禁用更新

所以我有一个UI用户输入select的字段;如何禁止用户输入插入/更新/删除?我可以检查第一个语句单词是select,但是他们可以在UI上输入多个用分号分隔的语句。

+0

您使用的是什么Web应用程序框架?什么编程语言?一般来说,你总是可以用';'分隔字符串,并检查每个元素是否包含关键字'update'。 – 2015-02-06 13:19:11

+0

谢谢,它是一个Java + AngulaJS Web应用程序。这些语句可能包含带分号的字符串。 – ps0604 2015-02-06 13:21:41

+1

你在使用什么数据库? – beny23 2015-02-06 13:26:47

回答

6

我会做到以下几点:

  • 在数据库中创建它只在你希望用户是可以访问的表授予SELECT权限的用户。

  • 在您的服务器中,使用来自上面的只读用户的单独数据源来处理客户端发出的查询。

+1

这是解决此问题的唯一解决方案 – Jcl 2015-02-06 13:37:49

0

以这样的方式构建您的用户界面,使用户输入类似field1, field2 from table2 where this = that的东西。在您的编程代码之前添加单词select。

+0

我无法做到这一点,因为我使用codemirror来自动完成表/列 – ps0604 2015-02-06 13:23:57

2

相信我,具有恶意意图的用户会想办法绕过检查并注入SQL。 (特别是如果你使用的是MS-SQL Server。)

所以,不要这样做。

编写一个合适的用户界面,无论它需要多么复杂,并且确保绝对没有用户输入的字符串在SQL查询中最终没有引号和未转义。

0

您可以使用Connection.setReadonly(true)方法启用只读事务。但是,只有在用户输入信任且我们需要防止意外更改数据的情况下,我才会使用它。

相关问题