【发布时间】:2010-02-01 15:19:54
【问题描述】:
我正在编写一个 Asp.Net WebForms 应用程序,我在其中调用一个编辑页面,并使用 URL 中的查询字符串参数传入有关要编辑的记录的数据。
喜欢:
http://myapp.path/QuoteItemEdit.aspx?PK=1234&DeviceType=12&Mode=Edit
在应用程序的上一个页面上,我已经向用户展示了一个他可以根据他的帐户权限编辑的筛选项目的 GridView,我使用上述参数列表调用编辑页面,页面知道该做什么.我不会在目标页面上做任何额外的检查来验证用户是否可以访问传入的 PK 记录值,因为我计划依靠上一页来过滤列表,我会没事的。
但是,很明显,用户现在可以输入不同 PK 的 URL 并获得编辑该记录的权限。 (或者,他可能有权访问 Mode=View,但不能访问 Mode=Edit 或 Mode=Delete。基本上,我希望避免验证目标页面上的记录和访问权限。
我还测试了相同的工作流程,使用 Session 变量在调用目标页面之前存储 PK、DeviceType 和 Mode,然后从目标页面中的 Session 中读取它们。因此不涉及查询字符串参数。这将使用户失去控制权。
因此,我正在寻找有关这两种方法的反馈,以便我选择一种公认/标准的方式来处理这个问题,因为这似乎是 CRUD 应用程序的一种非常常见的应用程序设计模式。
【问题讨论】:
-
感谢所有回答的人。显然,100% 的共识是您必须验证目标页面的访问权限,即使之前的工作流程已被设计为限制用户可以看到/执行的操作。我必须学会欣赏这种谨慎的态度。
-
遗憾的是,我只能将一个答案标记为已接受,但几乎任何一个答案都可以标记为已接受。
标签: asp.net parameters query-string