VB.Net MasterPage Page.PreLoad Свойство не найдено - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь внедрить подделку межсайтовых запросов (CSRF) с использованием Microsoft .Net ViewStateUserKey и Double Submit Cookie.Для получения дополнительной информации перейдите по этой ссылке

Приведенный выше код написан на C #, и я преобразую его в VB.Net.Теперь проблема в том, что в этом коде есть строка

Page.PreLoad += master_Page_PreLoad;

Когда я пытаюсь преобразовать ту же строку в VB.Net, он не находит такого события Page.PreLoad

Пожалуйстапомогите как я могу это сделать.

Спасибо

1 Ответ

0 голосов
/ 11 апреля 2019

Шаблон C # MasterPage, преобразованный в VB, выглядит следующим образом:

Partial Class MasterPage
    Inherits System.Web.UI.MasterPage

    Private Const AntiXsrfTokenKey As String = "__AntiXsrfToken"
    Private Const AntiXsrfUserNameKey As String = "__AntiXsrfUserName"
    Private _antiXsrfTokenValue As String

    Protected Sub Page_Init(ByVal sender As Object, ByVal e As EventArgs)
        Dim requestCookie = Request.Cookies(AntiXsrfTokenKey)
        Dim requestCookieGuidValue As Guid

        If requestCookie IsNot Nothing AndAlso Guid.TryParse(requestCookie.Value, requestCookieGuidValue) Then
            _antiXsrfTokenValue = requestCookie.Value
            Page.ViewStateUserKey = _antiXsrfTokenValue
        Else
            _antiXsrfTokenValue = Guid.NewGuid().ToString("N")
            Page.ViewStateUserKey = _antiXsrfTokenValue
            Dim responseCookie = New HttpCookie(AntiXsrfTokenKey) With {
                .HttpOnly = True,
                .Value = _antiXsrfTokenValue
            }

            If FormsAuthentication.RequireSSL AndAlso Request.IsSecureConnection Then
                responseCookie.Secure = True
            End If

            Response.Cookies.[Set](responseCookie)
        End If

        AddHandler Page.PreLoad, AddressOf master_Page_PreLoad
    End Sub

    Protected Sub master_Page_PreLoad(ByVal sender As Object, ByVal e As EventArgs)
        If Not IsPostBack Then
            ViewState(AntiXsrfTokenKey) = Page.ViewStateUserKey
            ViewState(AntiXsrfUserNameKey) = If(Context.User.Identity.Name, String.Empty)
        Else

            If CStr(ViewState(AntiXsrfTokenKey)) <> _antiXsrfTokenValue OrElse CStr(ViewState(AntiXsrfUserNameKey)) <> (If(Context.User.Identity.Name, String.Empty)) Then
                Throw New InvalidOperationException("Validation of Anti-XSRF token failed.")
            End If
        End If
    End Sub

    Protected Sub Page_Load(ByVal sender As Object, ByVal e As EventArgs)
    End Sub
End Class

Я считаю, что конкретная строка, которую вы ищете: AddHandler Page.PreLoad, AddressOf master_Page_PreLoad.

Для дальнейшего использования, если выВы хотите преобразовать код C # в VB или наоборот, для этого есть отличный инструмент Telerik: http://converter.telerik.com/. Чтобы получить код, который я выложил выше, я просто запустил C #шаблон через там.

...