首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >保存QueryString以保护URL操作

保存QueryString以保护URL操作
EN

Stack Overflow用户
提问于 2012-04-17 10:22:52
回答 4查看 587关注 0票数 0

有没有办法在页面加载后保存查询字符串Is?我之所以看,是因为...i应该来回处理页面,更重要的是,如果用户尝试手动插入it,那么它不应该影响我的页面结果,因为我将不从querystring读取it,而是从一些保存属性或类似的东西读取it。

举个例子:假设页面是第一次加载...我有这个url:

代码语言:javascript
复制
http://www.somesite.com/Shop/Product/Detail.aspx?ProductId=100 

如果用户试图修改查询并重新加载页面,则page_load不应从查询字符串中读取,而应从保存的属性或其他内容中读取。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-04-17 10:47:24

这是行不通的,因为它违背了互联网最基本的本质。互联网是无状态的。

每次用户更改查询字符串时,它将被视为新的Url,存储参数将没有任何用处。Page.IsPostback也不会工作,因为每次网址更改都会是第一次点击。

话虽如此,你仍然可以绕过它,

  1. 对于每个Url,您可以传递唯一的标识符(如Guid )。
  2. 只要页面命中,您就可以将参数保存在会话中并使用它们,并使用Guid来映射这两个请求。

但问题仍然存在,如果用户更改了该Guid,那么它将被视为新的请求。您可以前进一步并开始保存该GUID,以确保只处理系统生成的GUID,但总的来说,这只会使您的系统变得复杂。

我的猜测是,您可能正在为您的问题寻找错误的解决方案。如果你能分享你的实际目标,那么我们也许可以向你推荐一些更具体的东西。

票数 0
EN

Stack Overflow用户

发布于 2012-04-17 10:38:07

在页面加载事件中,查看Page.IsPostBack属性。第一次加载页面时为false。然后,您应该验证您的参数,并可能将它们保存到会话或视图状态。

代码语言:javascript
复制
If Page.IsPostback = false Then
    'Validate Request("ProductID") here
    'Save in viewstate or session state
Else
    'Retrieve ProductID from viewstate or session state
End If

如果用户更改了查询字符串,您应该将其视为新的页面加载。

票数 1
EN

Stack Overflow用户

发布于 2012-04-17 10:47:32

您不能阻止用户编辑查询字符串值并尝试查看另一个页面的内容或执行某些操作。您可以做的是在页面加载中检查该用户是否有足够的权限访问此页面。

代码语言:javascript
复制
Ex : www.mysite.com/editproduct.aspx?productid=4

editproduct.aspx中,您必须检查正在访问页面的当前用户是否有权访问产品4。(可能他应该是创建者/他应该属于特定的高级用户组,等等……取决于您的场景)。如果他有访问权限,则向用户显示编辑表单,否则将其隐藏并显示一条消息,提示“您未被授权访问此资源”。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10184251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档