2

List.aspx と View.aspx という名前の 2 つの 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 ページで、次のような 1 つの 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 を使用することをお勧めしません。この背後にあるアイデアは、ドメインのページからのみページを呼び出すことができるということです。UrlReferrer にはブラウザー固有の動作があるため、これは Cookie を介してより適切に実現できます。Chrome または Firefox は、これを Internet Explorer とは異なる方法で処理できます。

SO には同様の質問があり、どこにも 行き着きません: URL リファラーがポップアップ ウィンドウで機能しない

私があなただったらどうするか - の一部として

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 に答える