【问题标题】:Accessing https page访问 https 页面
【发布时间】:2012-12-29 12:07:43
【问题描述】:

我目前正在向我的网站 (.net) 添加一个 aspx 页面,我的客户可以在其中插入信用卡详细信息。 我想只允许从几个页面访问该页面(我们称它们为 a.aspx 和 b.aspx),如果有人试图从 c.aspx 访问该页面,他将无法这样做。 有没有办法将重定向限制为仅几个页面的页面?

我尝试在页面事件中使用“发送者”对象检查调用的来源,但我不确定这是正确的方法。

希望问题足够清楚。

【问题讨论】:

  • 您能否在问题中补充一下您到目前为止所尝试的内容?

标签: c# asp.net .net https


【解决方案1】:

您需要知道的是referer。 简单地说,referer 就是将您带到您当前所在页面的页面。

我相信这应该得到 ASP.net 的推荐人

Request.Server["HTTP_REFERER"]

然后您可以检查并查看引荐来源是否与您想要的来源相匹配。但是,我不确定引用者欺骗的难易程度/普遍性,或者它是否存在。

【讨论】:

  • 我也这么认为,这就是为什么我一定要提到它作为一个可能的安全问题。
【解决方案2】:

是的 - 看看 HttpWebRequest.Referer 属性。

使用它,您可以查看对 c.aspx 的请求是从哪个页面发出的 - 如果不是 a.aspx 或 b.aspx,您可以将用户重定向。

【讨论】:

    【解决方案3】:

    如前所述,您需要检查当前的 UrlReferrer,这是 vb.net 中的示例

    Protected Sub Page_Load(sender As Object, e As EventArgs) Handles Me.Load
        Dim bRedirect As Boolean = True
        Try
            If Not IsNothing(Page.Request.UrlReferrer) Then
                Dim sReferer As String = Page.Request.UrlReferrer.ToString()
                If sReferer.Contains("/a.aspx") Or sReferer.Contains("/b.aspx") Then
                    bRedirect = False
                End If
        Catch ex As Exception
            ' Raise exception, decide whether or not to redirect
        End Try
        If bRedirect Then
            Response.Redirect("~/x.aspx", True)
        End If
    End Sub
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-12-15
      • 2022-07-03
      • 1970-01-01
      • 2016-06-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多