Доступ к странице https

В настоящее время я добавляю страницу aspx на свой веб-сайт (.net), где мои клиенты могут вводить данные кредитной карты. Я хотел бы предоставить доступ к этой странице только с нескольких страниц (назовем их a.aspx и b.aspx), и если кто-то попытается получить доступ к этой странице из c.aspx, он не сможет этого сделать. Есть ли способ ограничить перенаправление на страницу только несколькими страницами?

Я попытался проверить в событии страницы, что является источником вызова, с помощью объекта «отправитель», однако я не уверен, что это правильный путь.

Надеюсь, вопрос достаточно ясен.


person David Rasuli    schedule 15.01.2013    source источник
comment
Не могли бы вы добавить к вопросу, что вы пробовали до сих пор?   -  person Jonas G. Drange    schedule 15.01.2013


Ответы (3)


Для этого вам нужно знать referer. Вкратце, реферер - это страница, которая привела вас к странице, на которой вы сейчас находитесь.

Я считаю, что это должно получить реферер для ASP.net

Request.Server["HTTP_REFERER"]

Затем вы можете просто проверить, соответствует ли реферер вашему желаемому происхождению. Однако я не уверен в легкости / распространенности спуфинга рефереров и в том, что он вообще существует.

person AlienHoboken    schedule 15.01.2013
comment
Я так и предполагал, поэтому обязательно упомянул об этом как о возможной проблеме безопасности. - person AlienHoboken; 15.01.2013

Да, есть - взгляните на HttpWebRequest.Referer свойство.

Используя это, вы можете увидеть, с какой страницы сделан запрос к c.aspx - если это не a.aspx или b.aspx, вы можете перенаправить пользователя.

person Barry Kaye    schedule 15.01.2013

Как упоминалось ранее, вам нужно проверить текущий 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
person James    schedule 15.01.2013