VB Visual Basic  ·  30 вопросов  ·  ~85 мин  ·  ⏱ Таймер 25:00  ·  Сложный  · 

Безопасность приложения на Visual Basic

Тест по теме «Безопасность приложения на Visual Basic» состоит из 30 вопросов: нужно читать код, сравнивать близкие решения, находить границы применимости правил и разбирать последствия ошибок. Заданий с кодом — 18; после каждого ответа открывается объяснение.

Отвечено: 0 из 30
⏱ --:--
0%
💡 Инструкция: Выберите один ответ из пяти. На тест отведено 85 минут; после ответа можно открыть объяснение.
Вопрос 1 из 30
Раздел «Проверка ввода»: какой разбор этого кода останется точным после переименования переменных?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Module Demo
    Function ParseQuantity(raw As String) As Integer
        Dim value As Integer
        If Not Integer.TryParse(raw, value) OrElse value < 1 OrElse value > 1000 Then
            Throw New ArgumentException("quantity")
        End If
        Return value
    End Function
End Module
Вопрос 2 из 30
Раздел «Проверка ввода»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Strict On
Namespace ReviewCase26_1
    Module Demo
        Function ParseQuantity(reviewRaw As String) As Integer
            Dim value As Integer
            If Not Integer.TryParse(reviewRaw, value) OrElse value < 1 OrElse value > 1000 Then
                Throw New ArgumentException("quantity")
            End If
            Return value
        End Function
    End Module
End Namespace
Вопрос 3 из 30
Раздел «Проверка ввода»: какой результат следует зафиксировать до запуска отрицательного сценария?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Explicit On
Option Infer On
Namespace BoundaryCase26_1
    Module Demo
        Function ParseQuantity(edgeRaw As String) As Integer
            Dim value As Integer
            If Not Integer.TryParse(edgeRaw, value) OrElse value < 1 OrElse value > 1000 Then
                Throw New ArgumentException("quantity")
            End If
            Return value
        End Function
    End Module
End Namespace
Вопрос 4 из 30
Раздел «Проверка ввода»: какое решение выдержит не только демонстрационный, но и отказный сценарий?
Вопрос 5 из 30
Раздел «Проверка ввода»: какое правило остаётся верным для современного Visual Basic?
Вопрос 6 из 30
Раздел «Секреты»: что здесь является частью контракта, а не особенностью одного удачного запуска?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Class SecretProvider
    Public Function GetDatabasePassword() As String
        Dim value = Environment.GetEnvironmentVariable("APP_DB_PASSWORD")
        If String.IsNullOrWhiteSpace(value) Then
            Throw New InvalidOperationException("secret missing")
        End If
        Return value
    End Function
End Class
Вопрос 7 из 30
Раздел «Секреты»: какое ограничение нельзя убрать только потому, что обычный пример проходит?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Strict On
Namespace ReviewCase26_2
    Class SecretProvider
        Public Function GetDatabasePassword() As String
            Dim value = Environment.GetEnvironmentVariable("APP_DB_PASSWORD")
            If String.IsNullOrWhiteSpace(value) Then
                Throw New InvalidOperationException("secret missing")
            End If
            Return value
        End Function
    End Class
End Namespace
Вопрос 8 из 30
Раздел «Секреты»: для фрагмента с SecretProvider добавляют регрессионный тест. Какой контракт он должен защищать?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Explicit On
Option Infer On
Namespace BoundaryCase26_2
    Class SecretProvider
        Public Function GetDatabasePassword() As String
            Dim value = Environment.GetEnvironmentVariable("APP_DB_PASSWORD")
            If String.IsNullOrWhiteSpace(value) Then
                Throw New InvalidOperationException("secret missing")
            End If
            Return value
        End Function
    End Class
End Namespace
Вопрос 9 из 30
Раздел «Секреты»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 10 из 30
Какое правило по теме «Секреты» можно безопасно перенести из примера в реальный проект?
Вопрос 11 из 30
Раздел «SQL-инъекции»: что здесь является частью контракта, а не особенностью одного удачного запуска?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Imports System.Data.Common
Module Demo
    Function FindUser(command As DbCommand, email As String) As DbDataReader
        command.CommandText = "select id,email from users where email=@email"
        Dim parameter = command.CreateParameter()
        parameter.ParameterName = "@email"
        parameter.Value = email
        command.Parameters.Add(parameter)
        Return command.ExecuteReader()
    End Function
End Module
Вопрос 12 из 30
Раздел «SQL-инъекции»: перед объединением правки нужно проверить один принцип. Какой именно?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Strict On
Imports System.Data.Common
Namespace ReviewCase26_3
    Module Demo
        Function FindUser(reviewCommand As DbCommand, reviewEmail As String) As DbDataReader
            reviewCommand.CommandText = "select id,reviewEmail from users where reviewEmail=@reviewEmail"
            Dim parameter = reviewCommand.CreateParameter()
            parameter.ParameterName = "@reviewEmail"
            parameter.Value = reviewEmail
            reviewCommand.Parameters.Add(parameter)
            Return reviewCommand.ExecuteReader()
        End Function
    End Module
End Namespace
Вопрос 13 из 30
Раздел «SQL-инъекции»: какой результат следует зафиксировать до запуска отрицательного сценария?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Explicit On
Option Infer On
Imports System.Data.Common
Namespace BoundaryCase26_3
    Module Demo
        Function FindUser(edgeCommand As DbCommand, edgeEmail As String) As DbDataReader
            edgeCommand.CommandText = "select id,edgeEmail from users where edgeEmail=@edgeEmail"
            Dim parameter = edgeCommand.CreateParameter()
            parameter.ParameterName = "@edgeEmail"
            parameter.Value = edgeEmail
            edgeCommand.Parameters.Add(parameter)
            Return edgeCommand.ExecuteReader()
        End Function
    End Module
End Namespace
Вопрос 14 из 30
Раздел «SQL-инъекции»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 15 из 30
Раздел «SQL-инъекции»: какой вывод можно использовать как основание для ревью кода?
Вопрос 16 из 30
Раздел «Безопасная десериализация»: код использует ReadMessage. Какой вывод останется верным при других допустимых входных данных?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Imports System.Text.Json
Module Demo
    Function ReadMessage(raw As String) As Message
        Dim options = New JsonSerializerOptions With {.PropertyNameCaseInsensitive = True}
        Dim message = JsonSerializer.Deserialize(Of Message)(raw, options)
        If message Is Nothing OrElse message.Kind <> "order" Then Throw New JsonException("unsupported message")
        Return message
    End Function
End Module
Вопрос 17 из 30
Раздел «Безопасная десериализация»: что должно остаться явным после переработки участка с ReadMessage?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Strict On
Imports System.Text.Json
Namespace ReviewCase26_4
    Module Demo
        Function ReadMessage(reviewRaw As String) As Message
            Dim reviewOptions = New JsonSerializerOptions With {.PropertyNameCaseInsensitive = True}
            Dim reviewMessage = JsonSerializer.Deserialize(Of Message)(reviewRaw, reviewOptions)
            If reviewMessage Is Nothing OrElse reviewMessage.Kind <> "order" Then Throw New JsonException("unsupported reviewMessage")
            Return reviewMessage
        End Function
    End Module
End Namespace
Вопрос 18 из 30
Раздел «Безопасная десериализация»: что изменится первым при нарушении ключевого допущения этого фрагмента?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Explicit On
Option Infer On
Imports System.Text.Json
Namespace BoundaryCase26_4
    Module Demo
        Function ReadMessage(edgeRaw As String) As Message
            Dim edgeOptions = New JsonSerializerOptions With {.PropertyNameCaseInsensitive = True}
            Dim edgeMessage = JsonSerializer.Deserialize(Of Message)(edgeRaw, edgeOptions)
            If edgeMessage Is Nothing OrElse edgeMessage.Kind <> "order" Then Throw New JsonException("unsupported edgeMessage")
            Return edgeMessage
        End Function
    End Module
End Namespace
Вопрос 19 из 30
Раздел «Безопасная десериализация»: какой вариант оставляет важное условие явным для следующего разработчика?
Вопрос 20 из 30
Какое утверждение о «Безопасная десериализация» выдерживает изменение имён и входных данных?
Вопрос 21 из 30
Посмотрите на фрагмент по теме «Совместимость и переносимость». Какое объяснение точнее всего связывает код с его поведением?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Class PlatformGuard
    Public Sub EnsureSupported()
        If Not OperatingSystem.IsWindowsVersionAtLeast(10) Then Throw New PlatformNotSupportedException()
        If Not Environment.Is64BitProcess Then Throw New PlatformNotSupportedException("x64 required")
    End Sub
End Class
Вопрос 22 из 30
Раздел «Совместимость и переносимость»: какой вывод должен пережить рефакторинг этого фрагмента?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Strict On
Namespace ReviewCase26_5
    Class PlatformGuard
        Public Sub EnsureSupported()
            If Not OperatingSystem.IsWindowsVersionAtLeast(11) Then Throw New PlatformNotSupportedException()
            If Not Environment.Is64BitProcess Then Throw New PlatformNotSupportedException("x64 required")
        End Sub
    End Class
End Namespace
Вопрос 23 из 30
Раздел «Совместимость и переносимость»: какое допущение стоит нарушить отдельно, чтобы проверка действительно ловила ошибку?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Explicit On
Option Infer On
Namespace BoundaryCase26_5
    Class PlatformGuard
        Public Sub EnsureSupported()
            If Not OperatingSystem.IsWindowsVersionAtLeast(9) Then Throw New PlatformNotSupportedException()
            If Not Environment.Is64BitProcess Then Throw New PlatformNotSupportedException("x64 required")
        End Sub
    End Class
End Namespace
Вопрос 24 из 30
Раздел «Совместимость и переносимость»: какой выбор не превращает скрытую ошибку в тихое продолжение работы?
Вопрос 25 из 30
Какое утверждение о «Совместимость и переносимость» выдерживает изменение имён и входных данных?
Вопрос 26 из 30
Посмотрите на фрагмент по теме «Стратегия тестирования». Какое объяснение точнее всего связывает код с его поведением?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Class SecurityTests
    <Theory>
    <InlineData("..\secret.txt")>
    <InlineData("C:\Windows\system.ini")>
    Public Sub RejectsPathsOutsideStorage(path As String)
        Assert.Throws(Of SecurityException)(Sub() Storage.Open(path))
    End Sub
End Class
Вопрос 27 из 30
Раздел «Стратегия тестирования»: какой вывод должен пережить рефакторинг этого фрагмента?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Strict On
Namespace ReviewCase26_6
    Class SecurityTests
        <Theory>
        <InlineData("..\secret.txt")>
        <InlineData("C:\Windows\system.ini")>
        Public Sub RejectsPathsOutsideStorage(reviewPath As String)
            Assert.Throws(Of SecurityException)(Sub() Storage.Open(reviewPath))
        End Sub
    End Class
End Namespace
Вопрос 28 из 30
Какое свойство механизма «Стратегия тестирования» нужно проверить на редком, но допустимом сценарии?
Visual Basic / VB.NETVisual Basic · Безопасность приложения на Visual Basic
Option Explicit On
Option Infer On
Namespace BoundaryCase26_6
    Class SecurityTests
        <Theory>
        <InlineData("..\secret.txt")>
        <InlineData("C:\Windows\system.ini")>
        Public Sub RejectsPathsOutsideStorage(edgePath As String)
            Assert.Throws(Of SecurityException)(Sub() Storage.Open(edgePath))
        End Sub
    End Class
End Namespace
Вопрос 29 из 30
Раздел «Стратегия тестирования»: как уменьшить риск дефекта, не подменяя причину запасным значением?
Вопрос 30 из 30
Какое утверждение точнее отделяет «Стратегия тестирования» от соседних механизмов?

Ответьте на все 30 вопросов, чтобы получить результат

🔗 Встроить тест на свой сайт (iframe) ▼

Скопируйте код и вставьте в любое место на вашем сайте:

Также доступна прямая ссылка на embed-страницу