none
Como usar store procedure RRS feed

  • Pregunta

  • Hola a todos como puedo usar el store procedure para que no me hagan injectio yo lo uso de esta manera pero cual es la forma correcta

    Public Function AddCliente(cliCodigo As String, cliNombre As String, cliRuc As String, cliCedula As String, cliDireccion As String, cliTelefono As String) As String
       Dim NextCliente As String, strSQL As String
       On Error GoTo AddChequeError
       NextCliente = GetNextId(cliCodigo)
       xMarca = NextCliente
    '   Insertar Nueva Linea
       Call Conectar
       strSQL = "xspClientes 'Add', '" & NextCliente & "', '" & cliNombre & "', '" & cliCedula & "', '" & cliDireccion & "',"
       strSQL = strSQL & " '" & cliTelefono & "', '" & cliRuc & "'"
       cnMDB.Execute strSQL
       AddCliente = CStr(cliCodigo)
       On Error GoTo 0
       Exit Function
    AddChequeError:
        AddCliente = ""
        MsgBox Err.Description
        On Error GoTo 0
    End Function


    Pedro Avila

    viernes, 10 de agosto de 2012 23:11

Respuestas

  • Hola Toni, sobre injection me refiero a que no ataquen a la db para vulnerar las claves o los datos :

    Public Function AgregarCliente(codigo As String, ruc As String, razonSocial As String, ciudad As String, direccion As String, telefono As String, celular As String) As Boolean

       On Error GoTo tratarError
        Dim cmd As New Command
       
        With cmd
          .ActiveConnection = cnMDB
          .CommandText = "xspAgregarCliente"
          .CommandType = adCmdStoredProc
          .Prepared = True
          .Parameters.Append .CreateParameter("@cliCodigo", adVarChar, adParamInput, 6, codigo)
          .Parameters.Append .CreateParameter("@cliRuc", adVarChar, adParamInput, 11, ruc)
          .Parameters.Append .CreateParameter("@cliRazonSocial", adVarChar, adParamInput, 80, razonSocial)
          .Parameters.Append .CreateParameter("@cliCiudad", adVarChar, adParamInput, 40, ciudad)
          .Parameters.Append .CreateParameter("@cliDireccion", adVarChar, adParamInput, 100, direccion)
          .Parameters.Append .CreateParameter("@cliTelefono", adVarChar, adParamInput, 9, telefono)
          .Parameters.Append .CreateParameter("@cliCelular", adVarChar, adParamInput, 9, celular)
          .Execute
        End With
        
       On Error GoTo 0
       Desconectar
       Exit Function

    tratarError:
        MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure AgregarUsuario of Módulo de clase clsCliente"
    End Function

    Lo estoy haciendo de esta manera


    Pedro Avila

    • Marcado como respuesta Pedro Ávila martes, 14 de agosto de 2012 0:19
    sábado, 11 de agosto de 2012 15:28

Todas las respuestas

  • Hola

    La verdad es que no utilizo Store Procedure y eso de inyeccion no estoy seguro a lo que te refieres, pero creo que si pasas los valores a store procedure como parametros no hace falta colocar los valores (variables) dentro de las comillas simples, de esta forma deberia de funcionar

    strSQL = "xspClientes 'Add', " & NextCliente & ", " & cliNombre & ", " & cliCedula & ", " & cliDireccion & "
    strSQL = strSQL & cliTelefono & ", " & cliRuc 

    No lo he probado

    Saludos

    • Editado ToniAG sábado, 11 de agosto de 2012 15:10
    sábado, 11 de agosto de 2012 15:08
  • Hola Toni, sobre injection me refiero a que no ataquen a la db para vulnerar las claves o los datos :

    Public Function AgregarCliente(codigo As String, ruc As String, razonSocial As String, ciudad As String, direccion As String, telefono As String, celular As String) As Boolean

       On Error GoTo tratarError
        Dim cmd As New Command
       
        With cmd
          .ActiveConnection = cnMDB
          .CommandText = "xspAgregarCliente"
          .CommandType = adCmdStoredProc
          .Prepared = True
          .Parameters.Append .CreateParameter("@cliCodigo", adVarChar, adParamInput, 6, codigo)
          .Parameters.Append .CreateParameter("@cliRuc", adVarChar, adParamInput, 11, ruc)
          .Parameters.Append .CreateParameter("@cliRazonSocial", adVarChar, adParamInput, 80, razonSocial)
          .Parameters.Append .CreateParameter("@cliCiudad", adVarChar, adParamInput, 40, ciudad)
          .Parameters.Append .CreateParameter("@cliDireccion", adVarChar, adParamInput, 100, direccion)
          .Parameters.Append .CreateParameter("@cliTelefono", adVarChar, adParamInput, 9, telefono)
          .Parameters.Append .CreateParameter("@cliCelular", adVarChar, adParamInput, 9, celular)
          .Execute
        End With
        
       On Error GoTo 0
       Desconectar
       Exit Function

    tratarError:
        MsgBox "Error " & Err.Number & " (" & Err.Description & ") in procedure AgregarUsuario of Módulo de clase clsCliente"
    End Function

    Lo estoy haciendo de esta manera


    Pedro Avila

    • Marcado como respuesta Pedro Ávila martes, 14 de agosto de 2012 0:19
    sábado, 11 de agosto de 2012 15:28