sql-server - 提高 "database layer"处的安全性 - 仅允许选择查询

标签 sql-server security linq-to-sql

我正在 silverlight 中构建一个应用程序,该应用程序将使用户能够读取有关其付款的信息。他们的登录名和密码将保存在数据库的表中。

是否可以通过限制查询可以访问的数据来提高应用程序的安全性?例如,我想阻止用户选择他们不拥有的数据。一个限制是我的应用程序正在为用户使用自己的表,因此我无法使用 GRANT PERMISSION :/。我正在使用 Linq 来构建我的 sql 查询。

这个问题来 self 的老师,他“建议”我提高安全性,所以如果不可能 - 也没什么大不了的;)

最佳答案

嗯,你问的问题有点模糊,但我会冒险尝试一下。

您必须对用户的身份进行一些身份验证,以便仅向他们显示他们的付款,而不是其他人的付款。因此,如果您能做到这一点,您应该能够创建触发器,禁止从相同的身份对表进行任何插入、更新或删除...我不认为这是一个非常强大或可扩展的解决方案,但这是一个想法。

CREATE TRIGGER [x] ON [TABLE] FOR INSERT

/* Disallow Users to insert */
IF EXISTS( SELECT 1 1 FROM [Users] WHERE [Users].UserID = [Y])
--Rollback transaction, set error, etc

您有更多详细信息吗?其他任何事情都可能有助于找到更好的解决方案。

关于sql-server - 提高 "database layer"处的安全性 - 仅允许选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2413551/

相关文章:

sql-server - 从 SQL Server 新建的表中获取记录时出现超时错误

asp.net - 授予 IIS_IUSRS 完全控制权限有哪些安全影响?

android - 如何在爬虫中安全地使用用户输入的凭据?

c# - LINQ to SQL 将查询结果存储在变量中

linq-to-sql - Linq 到 Sql : handle NewID()

c# - 在 LINQ 查询中将枚举转换为字符串时出错

sql-server - 无法作为本地主机连接到 MSSQL 服务器管理工​​作室

asp.net - 类型或命名空间名称 'Linq' 在命名空间 'System.Data' 中不存在

asp.net - 奇怪的间歇性 SQL 连接错误,重新启动后修复,3-5 天后返回 (ASP.NET)

c# - 如何使用 C# 从 ASP.NET 检索 MAC id