字符串检查恶意SQL

时间:2013-07-26 03:35:42

标签: sql sql-server tsql sql-injection

我正在编写一个简单的实用程序,它允许我们的用户在数据库上运行简单的选择SQL语句来检索他们需要的数据。只需一个文本框和一个按钮,当他们点击按钮时,它会将查询结果吐出一个列表。

我遇到的问题是我只希望它们能够运行SELECT语句。我不希望执行任何编辑语句,即更新,插入,删除,删除等。

是否有一种简单的方法来解析sql字符串以确保它只输入一个只读的select语句?

2 个答案:

答案 0 :(得分:0)

更好的方法是使用sql权限。作为datareader,您的用户只能选择SELECT。 exec sp_addrolemember db_datareader, <user>

答案 1 :(得分:0)

处理此问题的最佳方法是创建仅具有有限权限的用户。

如果您想允许用户从所有表中读取数据,那么您可以使用Steve D已经建议的内容。

如果您想允许用户只读取某些表中的数据而不是所有表,那么您需要创建一个只具有“公共”角色的用户,然后为特定表创建GRANT SELECT。

login propertis

确保用户仅在此处为给定数据库选择“公共”

然后只对所有表执行此查询

grant select on <schema>.<table> to <user>