允许用户在Web应用程序中输入禁用更新的SQL select语句

时间:2015-02-06 13:15:40

标签: sql web sql-injection

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

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

4 个答案:

答案 0 :(得分:6)

我会做以下事情:

  • 在您的数据库中创建一个用户,该用户只有您希望用户可以访问的表的SELECT权限。

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

答案 1 :(得分:2)

相信我,具有恶意意图的用户将找到绕过检查并注入SQL的方法。 (特别是如果您使用的是MS-SQL Server。)

所以,不要这样做。

编写一个合适的用户界面,无论它需要多么复杂,并确保用户输入的字符串绝对不会在SQL查询中取消引用和取消转义。

答案 2 :(得分:0)

以用户输入field1, field2 from table2 where this = that之类的方式构建您的用户界面。在编程代码前加上select字样。

答案 3 :(得分:0)

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