确保从特定链接访问页面

本文关键字:访问 链接 确保 | 更新日期: 2023-09-27 18:17:47

如果我有link1。和link2.aspx。link1之内。

链接到link2.aspx。

检查链接的最有效方法是什么?Aspx只能通过link1.aspx?

例如:

link2.aspx:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        if page is not accessed via link1.aspx
        {
            Response.Redirect("~/portal.aspx");
        }
    }
}

我可以使用查询字符串,但还有其他方法吗?

确保从特定链接访问页面

您可以使用UrlReferrer。然而,这不是一种检测用户来自何处的安全方法。

例如

if (string.Equals(Request.UrlReferrer.AbsoluteUri,
    "YOUR_REFERRER_URL",
    StringComparison.InvariantCultureIgnoreCase))
{
}

如果它是在你的应用程序中的页面之间重定向,我想建议使用SessionState,这是比UrlReferrer更安全和健壮。

link1.aspx.cs

private bool IsValidUrl
{
    set { Session["IsValidUrl"] = true; }
}
protected void Button1_Click(object sender, EventArgs e)
{
    IsValidUrl = true;
    Response.Redirect("link2.aspx");
}

link2.aspx.cs

private bool IsValidUrl
{
    get
    {
        if (Session["IsValidUrl"] != null)
            return Convert.ToBoolean(Session["IsValidUrl"]);
        return false;
    }
    set { Session["IsValidUrl"] = value; }
}
protected void Page_Load(object sender, EventArgs e)
{
    if (IsValidUrl)
    {
        // user comes from valid url. 
        // .... Do somthing
        // Reset session state value
        IsValidUrl = false;
    }
}

您可以使用Request.UrlReferrer属性来检查用户来自哪个页面