在asp.net网站的上下文中,检查用户是否可以访问特定记录的最有效方法是什么?

时间:2010-05-26 06:41:39

标签: asp.net sql-server permissions

我有一个网页,你传入一个id参数(通过一个查询字符串),然后它用来从数据库中获取数据。通常,用户将从另一个页面导航到该页面,该页面仅列出用户有权访问的那些记录。但是,如果他们通过在地址栏中输入URL直接进入页面,他们可以有效地查看他们喜欢的任何记录。

EG。如果他们要在地址栏中键入类似http://localhost/TestSite/ClientAdmin/ManageLocation.aspx?LocationID=5的内容,他们可以访问LocationID等于5的数据库记录 - 即使他们不应该访问它。

现在,我可以通过每次加载页面时执行数据库检查来解决此问题,以查看当前用户是否可以访问他们尝试查看的记录。然而,这似乎不是非常有效,因为在大多数情况下,用户不会尝试访问不属于他们的记录。有人有更好的建议吗?

感谢。

2 个答案:

答案 0 :(得分:0)

您可以使用Page.Request.UrlReferrer查看它们的来源,但这并不是一种完全安全的方法。

如果每个用户拥有“他们自己的”数据,而其他用户无权访问,那么您可能希望查看适当的多租户 - 尽管这通常是基于每个组织而不是用户:

http://en.wikipedia.org/wiki/Multitenancy

答案 1 :(得分:0)

而不是在加载页面时进行额外检查,您可以使用INNER JOIN并在访问权限不存在的情况下有效地返回任何内容。

如果所有索引都存在,那么它的成本应该不高。