【问题标题】:Protecting variable inside of markup for asp:Hyperlink Navigation property保护asp标记内的变量:超链接导航属性
【发布时间】:2011-03-02 03:02:51
【问题描述】:

我有一个带有一系列 asp:hyperlink 的 asp.net 中继器控件

<asp:HyperLink runat="server" ID="name" NavigationUrl="~/Pages/display.aspx?fileid={0}&user={1}" />

然后在 OnItemDataBound 方法上:

fullname.NavigationUrl=string.Format(name.NavigationUrl, user.fileid, user.userid);

所以这给了我中继器中的一系列 URL
http://www.abc.com/users.aspx?fileid=1&userid=10
http://www.abc.com/users.aspx?fileid=2&userid=20
http://www.abc.com/users.aspx?fileid=3&userid=30

好的,因此使用简单的代理工具,某人可以将其中一个参数替换为其他数字,以访问他们不应该看到的内容。 除了服务器端验证和身份验证,尝试在中继器中创建动态 URL 时,除了传递参数之外,还有更好的方法吗?

谢谢。

【问题讨论】:

    标签: c# asp.net navigation


    【解决方案1】:

    是的,创建一个 LinkBut​​ton,将其发送回服务器,然后获取您需要的信息(可能需要从数据库加载)并改为执行 Response.Redirect。

    如果你公开了查询字符串,它总是可以改变的。我看到使用的其他方法是加密查询字符串参数,并在另一页上解密。如果解密失败,则对其进行了修补。

    HTH。

    【讨论】:

      【解决方案2】:

      您可以像 Brian 提到的那样加密参数。您可以查看的另一件事是 Cross Page Postback 。另一种选择是在会话 cookie 中设置参数,对后面的代码进行重定向,然后在目标页面上获取参数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-01-02
        • 1970-01-01
        相关资源
        最近更新 更多