asp.net - 查询字符串参数使我的应用程序面临风险?

标签 asp.net parameters query-string

我正在编写一个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应用程序的一种非常常见的应用程序设计模式。

最佳答案

我相信通常的做法是做您要避免的事情:在原始页面上,您需要检查以查看用户应该执行的功能,并适当显示其选项。然后,在实际工作页面上,您需要再次检查用户,以验证他们是否可以访问该特定任务。

从可用性的角度来看,这就是用户想要的(保持简单,允许他们为某些页面添加书签等),并且这两个页面上的安全性是实现此目的的唯一方法。

关于asp.net - 查询字符串参数使我的应用程序面临风险?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2177673/

相关文章:

asp.net - 将 SVN 与 Visual Studio 2003 集成

asp.net - 我想从后面的代码中获取属性值

asp.net - 如何拦截 ASP.NET 中的异步请求/获得有关异步请求的通知?

python - 如何将文件名作为参数传递到我的模块中?

javascript - 在不引起页面刷新的情况下设置URL参数

apache - 在调用 CGI 并且 URI 包含没有值的单个查询字符串参数时,Apache2 中是否存在特殊情况?

php - 处理 RESTful url 的 PHP

asp.net - 初始化字符串的格式不符合规范,从 NLog 中的索引 158 开始

javascript - JS - 访问作用域外的函数参数数组

将指针转换为 float 或指向带有指针参数的函数