2

我有两个名为 List.aspx 和 View.aspx 的 aspx 页面。

在 view.apsx 中使用 Request.UrlReferrer 属性(出于某些安全目的)

View.aspx
Protected Sub Page_Load(sender As Object, e As System.EventArgs) Handles Me.Load

    If Request.UrlReferrer Is Nothing Then
        Response.Write("Invalid URL")
    Else
      // Some Code here
    End

End Sub

在 List.aspx 页面中调用一个 java 脚本函数,例如:

List.aspx 
    function ViewDetail(HCode)
    {
            var url = "View.aspx?ActivePageName=V&HeaderCode=" + HCode;
                var z = window.open(url, "Action", "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=0,border=thin,top=400,left=400,width=500,height=200");
    }

在新打开的弹出窗口中,我得到 UrlReferrer 错误。

4

1 回答 1

2

首先,我会尽量劝阻您出于安全目的使用 UrlReferrer。这背后的想法是您只能从您域上的页面调用您的页面。这可以通过 cookie 更好地实现,因为 UrlReferrer 具有特定于浏览器的行为。Chrome 或 Firefox 的处理方式与 Internet Explorer 不同。

SO上有一个类似的问题导致无处可去: URL Referer not working on pop up windows

如果我是你,我会怎么做——作为

var url = "View.aspx?ActivePageName=V&HeaderCode=" + HCode + "&Token=<%= EncryptedToken %>";

我会传递一些安全令牌,其中将包含页面名称,例如 (C#) :

string EncryptedToken { get {
  return Encrypt(string.Format("/List.aspx,{0}", DateTime.Now.Ticks));
}}

在 View.aspx 上(除了 UrlReferrer)检查查询字符串中是否有加密令牌,是否可以解密并且不是太旧。

于 2013-06-27T11:37:38.520 回答