我需要允许用户在我的Web应用程序中输入SQL select语句;这些select语句将用于在自定义下拉列表中生成选项。
所以我在UI上有一个用户输入选择的字段;如何禁止用户输入插入/更新/删除?我可以检查第一个语句是select
但是他们可以在用分号分隔的UI上输入多个语句。
答案 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)方法启用只读事务。但是,只有当用户输入受信任且我们需要防止意外更改数据时,我才会使用它。