【问题标题】:Saving QueryString to protect URL manipulation保存 QueryString 以保护 URL 操作
【发布时间】:2012-04-17 02:22:51
【问题描述】:

有没有办法在页面加载后保存查询字符串 ID?我正在寻找的原因是......我应该在页面上来回走动,更重要的是,如果用户尝试修改 id,那么它不应该影响我的页面结果,因为我将不是从查询字符串中读取 Id但来自一些保存道具或类似的东西。

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

http://www.somesite.com/Shop/Product/Detail.aspx?ProductId=100 

如果用户尝试修改 querystirng 并重新加载页面,那么 page_load 不应该从查询字符串中读取,而是从保存的 prop 或其他东西中读取???

【问题讨论】:

    标签: asp.net request.querystring


    【解决方案1】:

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

    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
    

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

    【讨论】:

      【解决方案2】:

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

      每次用户更改查询字符串时,都会将其视为一个新的Url,存储参数将毫无用处。 Page.IsPostback 也不起作用,因为每次 Url 更改都将是第一次点击。

      话虽如此,您仍然可以解决它,

      1. 对于每个 Url,您可以传递一个唯一标识符(如 GUID。)

      2. 一旦页面点击,您可以在会话中保存参数并使用它们并使用 Guid 映射两个请求。

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

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

      【讨论】:

        【解决方案3】:

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

        Ex : www.mysite.com/editproduct.aspx?productid=4
        

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

        【讨论】:

        • 这是一个公共网站。所以这里没有涉及到用户访问。
        【解决方案4】:

        没有办法;但是,您可以使用 session 来验证何时调用 Page_load。

        If ( Page.isPostBack = true ) {
            Session("SAVE") = false;
        }
        

        在 Request.Querystring 语句之前的一段时间内,您验证“保存”会话状态。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2014-12-26
          • 2012-01-19
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多