Member 11042699 Ответов: 1

Что именно этот код делает?


Я изучаю старый код vb 6, так как у меня есть работа поддержки
я не понял нижеприведенных строк
Public Function BadgeVerificationSucceed(sBadgeID As String) As Boolean
   
    
   On Error GoTo ErrHandler

    If Len(sBadgeID) = 0 Then Exit Function
    
    Set rstADO = New ADODB.Recordset
    With rstADO
        sqlQuery = "Select *  FROM  tblUsers  Where [Employee ID] = '" & sBadgeID & "'" ' And [ClusterID]=" & MyClusterID & " And [EnableCompartment] <> 0  Order By [CabinetCode],[CompartmentCode]"
        
        ''debug..print sqlQuery
        .Open sqlQuery, cnsecurecabinetdb, adOpenKeyset, adLockOptimistic, adCmdText
        If Not .EOF Then
            ![RFID] = myRFID
            myFullName = ![First Name] & " " & ![Last Name]
            myUserID = ![UserID]
            .Update
            BadgeVerificationSucceed = True
        End If
        .Close
    End With
    Set rstADO = Nothing
    
    Exit Function


Что я уже пробовал:

Пробовал преобразование кода с VB 6 на vb.net его выдавала ошибку.

ZurdoDev

Он ищет значок в таблице, и если он его находит, он вытаскивает некоторые значения.

Member 11042699

что именно это будет делать ![RFID] = мирфид?

ZurdoDev

Насколько я помню, это установит значение в базе данных.

F-ES Sitecore

Это внутри "с rstADO", так что это

рстад![РАДИОЧАСТОТНАЯ ИДЕНТИФИКАЦИЯ]

VB6 как концепция полей по умолчанию, так что если ни одно из них не указано, то используется значение по умолчанию, а также раннее и позднее связывание, так что полностью развернутая строка эффективно

рстад.Поля (РЧИД) = myRFID

таким образом, он устанавливает значение поля RFID в этой записи в myRFID. Позже об этом .Обновление сохраняет это изменение в базе данных.

1 Ответов

Рейтинг:
0

OriginalGriff

Он разговаривает с базой данных опасным образом - он широко открыт для SQL-инъекций, которые могут повредить или уничтожить вашу базу данных, - и возвращает извлекаемые из нее строки. Затем он захватывает значения из первой возвращенной строки и игнорирует все остальные.

Если это стандарт кода, который вы конвертируете, я бы связал его и начал снова с нуля: SQL-инъекция-это ошибка школьника, и это означает, что остальная часть кода одинаково бедна.


F-ES Sitecore

Чтобы быть педантичным, вы не знаете, уязвим ли он для SQL-инъекции, потому что вы не знаете, откуда взялся sBadgeID.

OriginalGriff

Каждый раз, когда вам передают строки, это должно считаться уязвимым - потому что, если это не сейчас, это будет на следующей неделе! :смеяться: