© 2015-2026. MindStreamAnalytics.com

Blog

¿Qué es la inyección SQL y por qué es importante en OneStream?

Esto le ocurrió a un cliente el otro día. Estaban realizando una auditoría de seguridad de las reglas de negocio de OneStream escritas en su aplicación. La auditoría fallaba debido a una inyección SQL. Entonces, ¿qué es la inyección SQL y cómo se escribe código para evitarla (y superar la auditoría de seguridad)?

La inyección SQL es una vulnerabilidad de seguridad que permite a un atacante modificar las consultas SQL inyectando código malicioso en las secciones de entrada del usuario de una consulta SQL. Incluir la entrada del usuario concatenada en la consulta SQL permite la inyección SQL.

El siguiente ejemplo de código proviene de una regla de negocio de OneStream. Muestra un ejemplo de una consulta de base de datos SQL susceptible a la inyección SQL. La consulta se basa en la entrada del usuario de dos variables: nombre y apellido del vendedor.


 Dim dt as New DataTable
 Dim strSalesPersonFirstName As String = "John"
 Dim strSalesPersonLastName As String = "Doe"
 Dim strCity As String = Nothing
 using dbconn As DbConnInfo = BRApi.Database.CreateApplicationDbConnInfo(si)
        Dim Sql As String = String.Empty
        sql = $"SELECT City from XFC_TableView_SalesPerson WHERE SalesPersonFirstName = '{strSalesPersonFirstName}' AND SalesPersonLastName = '{strSalesPersonLastName}';"
        dt = BRApi.Database.ExecuteSqlUsingReader(dbConn,sql.ToString,False)
        If Not dt is Nothing Then
           For Each RowNotInTableException As DataRow In dt.Rows
                    strCity = RowNotInTableException.Item("City")
           Next
        End If
        brapi.ErroLog.LogMessage(si,"City=" & strCity.ToString)
 End Using

La consulta SQL es interpretada por VB.Net, que reemplazaría las dos variables de cadena en la consulta SQL y pasaría la consulta completa a la base de datos. Se vería así: "SELECT City from XFC_TableView_SalesPerson WHERE SalesPersonFirstName = ‘John’ AND SalesPersonLastName = ‘Doe’;". Esto abre la posibilidad de que un atacante reemplace las dos variables introducidas por el usuario con otro código SQL que se pasaría, se concatenaría en la consulta por VB.Net y se ejecutaría en la base de datos.

¿Cómo evitar esto? Una forma es separar la entrada del usuario de la consulta SQL mediante consultas parametrizadas.

Las consultas parametrizadas mantienen la entrada del usuario separada de la consulta SQL en el código. Luego, la entrada del usuario parametrizada se pasa por separado de la consulta SQL a la base de datos.

En la práctica, funciona de la siguiente manera: Seguirá usando BRApi.Database.ExecuteSql o BRApi.Database.ExecuteSqlUsingReader. Lo que hará de forma diferente es usar la versión que toma un objeto dbParamInfo como parámetro.


Syntax
Public Function ExecuteSqlUsingReader(ByVal dbConn As DbConnInfo, ByVal sqlStatement As String, ByVal dbParaminfos As List(Of DbParaminfo),
ByVal useCommandTimeoutLarge As Boolean) As DataTable

dbParamInfo es una lista de DbParamInfo. Básicamente, se carga esta lista con los parámetros y sus valores para la consulta SQL parametrizada y se pasa a BRApi.Database.ExecuteSql o BRApi.Database.ExecuteSqlUsingReader.

1. En su regla de negocio, cree un objeto DbParamInfo y luego agregue sus variables y sus valores usando “.Add”.


 Dim dt as New DataTable
 Dim strSalesPersonFirstName As String = "John"
 Dim strSalesPersonLastName As String = "Doe"
 Dim strCity As String = Nothing
 Dim dbParamInfos As New List(Of DbParamInfo)
 dbParamInfos.Add(New DbParamInfo("strSalesPersonFirstName", strSalesPersonFirstName))
 dbParamInfos.Add(New DbParamInfo("strSalesPersonLastName", strSalesPersonLastName))

2. Luego parametriza tu consulta SQL.


Using dbConn As DbConnInfo = BRApi.Database.CreateApplicationDBConnInfo(si)
Dim Sql As String = String.Empty
 sql = $"SELECT City from XFC_TableView_SalesPerson WHERE SalesPersonFirstName = @strSalesPersonFirstName AND SalesPersonLastName = @strSalesPersonLastName;"

3. Finalmente, pasa la consulta SQL y el objeto DbParamInfo a la llamada BRApi.Database.ExecuteSql o BRApi.Database.ExecuteSqlUsingReader. Manteniendo los parámetros separados de la consulta SQL. De esta forma, se evita la inyección SQL.

La consulta en su totalidad.


 Dim dt as New DataTable
 Dim strSalesPersonFirstName As String = "John"
 Dim strSalesPersonLastName As String = "Doe"
 Dim strCity As String = Nothing
  Dim dbParamInfos As New List(Of DbParamInfo)
 dbParamInfos.Add(New DbParamInfo("strSalesPersonFirstName", strSalesPersonFirstName))
 dbParamInfos.Add(New DbParamInfo("strSalesPersonLastName", strSalesPersonLastName))
 using dbconn As DbConnInfo = BRApi.Database.CreateApplicationDbConnInfo(si)
        Dim Sql As String = String.Empty
        sql = $"SELECT City from XFC_TableView_SalesPerson WHERE SalesPersonFirstName = @strSalesPersonFirstName AND SalesPersonLastName = @strSalesPersonLastName;"
        dt = BRApi.Database.ExecuteSqlUsingReader(dbConn,sql.ToString,dbParamInfors,False)
        If Not dt is Nothing Then
           For Each RowNotInTableException As DataRow In dt.Rows
                    strCity = RowNotInTableException.Item("City")
           Next
        End If
        brapi.ErroLog.LogMessage(si,"City=" & strCity.ToString)
 End Using

No supone un gran cambio respecto a la forma habitual de escribir consultas SQL en OneStream y ayudará a evitar inyecciones SQL (y a superar las auditorías de seguridad).

Socio Destacado

OneStream se alinea con las necesidades de su negocio y cambia más rápida y fácilmente que cualquier otro producto al ofrecer una plataforma y un modelo para todas las soluciones financieras de CPM. OneStream emplea guiado Flujos de trabajo, validaciones y mapeo flexible para brindar confianza en la calidad de los datos para todas las recopilaciones y análisis al tiempo que se reduce el riesgo a lo largo de todo el proceso financiero auditable.

OneStream

Estudios de caso

Accumen

Gracias a la intervención de MindStream Analytics, el departamento de Finanzas de Accumen ahora puede modelar su negocio con una estructura nueva y más organizada que no está disponible convencionalmente en NetSuite.

Acme Brick

Acme Brick recurrió a MindStream Analytics en busca de ayuda para implementar OneStream para reemplazar su obsoleta solución TM1.

Alterra

Alterra buscó la experiencia de MindStream para abordar los desafíos que enfrentaron en su proceso de planificación de capital.

ATCO Group

El conglomerado energético ATCO opera en todo el mundo en servicios públicos, generación de energía y servicios relacionados.

Avalon

Al trabajar con MindStream Analytics, Avalon Healthcare Solutions adopta NetSuite Planning and Budgeting para acelerar los procesos de presupuestación y previsión.

Bayer Health Care

Bayer Healthcare implementó Hyperion Planning y Workforce Planning en 10 semanas para optimizar drásticamente su presupuesto de declaración de ingresos y su proceso de planificación de la fuerza laboral.

BluEarth

La asociación de MindStream Analytics con BluEarth Renewables personifica el poder de la tecnología y la colaboración.

Celgene

Una actualización de planificación de Oracle Hyperion proporciona optimización y estabilización de la aplicación Hyperion de organizaciones multinacionales.

Cleaver Brooks

Se eligió OneStream XF como la plataforma que transformaría los procesos financieros de Cleaver-Brooks.

CoorsTek

La colaboración entre CoorsTek y MindStream dio como resultado mejoras significativas en los procesos de informes y consolidación financiera de CoorsTek.

Elite Body Sculpture

La colaboración de MindStream Analytics con Elite Body Sculpture resume el potencial transformador de las soluciones tecnológicas específicas para agilizar los procesos administrativos.

Enlyte

Enlyte, una fusión de Mitchell, Genex y Coventry, enfrentó desafíos con soluciones financieras dispares y la necesidad de informes combinados.

Flanders

MindStream Analytics colaboró ​​con Flanders para implementar la solución OneStream Consolidation and Reporting.

Productos Foley

Foley Products se enfrentaba a un desafío importante con su sistema de informes de gestión real basado en Excel.

Harte Hanks

La colaboración entre MindStream Analytics y Harte Hanks culminó en una implementación de NetSuite altamente personalizada y fácil de usar.

Interface

La interfaz utilizó un proceso de FP&A complejo, manual y basado en Excel para la revisión mensual, y los datos resumidos se cargaron en OneStream.

Kymera Internacional

Gracias a la asistencia de Mindstream Analytics, Kymera pudo cargar todos sus datos en OneStream y validarlos exitosamente.

MacLean Fogg

MacLean-Fogg se asoció con MindStream, un implementador líder que se especializa en modernizar y optimizar sistemas empresariales.

MEPPI

Se buscaron los conocimientos y la experiencia de MindStream para llevar a cabo una iniciativa de selección de proveedores centrada en el proceso de planificación F2023 de MEPPI.

OUAI

La colaboración de MindStream Analytics y OUAI muestra el poder transformador de la intervención tecnológica estratégica.

Plaskolite

Al migrar a OneStream, Plaskolite logró una reducción sustancial en el tiempo de consolidación y el ciclo general de cierre financiero, eliminó las horas dedicadas a compilar y verificar datos en Excel, agilizó su modelo de planificación, presupuestación y previsión y entregó informes flexibles y oportunos que permiten un análisis más estratégico de sus datos financieros.

Redwire

Al comprender los matices de los desafíos de Redwire, MindStream Analytics ideó un enfoque holístico para superarlos. La implementación de NetSuite fue sólo el comienzo.

Simon

La aplicación de producción corporativa Hyperion Financial Management (HFM) existente de Simon se estaba consolidando a un ritmo de siete horas, un problema de rendimiento que causaba un gran dolor de cabeza a la contabilidad corporativa.

Source Code

La transición exitosa a OneStream revolucionó los informes financieros de Source Code.

Subway

Subway colaboró ​​con MindStream Analytics para la implementación de NetSuite Analytics Warehouse.

UPenn

Los miembros del equipo de MindStream Consulting y AppCare están orgullosos de trabajar codo con codo con la Universidad de UPenn para lograr esta implementación y continuar con nuestros servicios de AppCare después de su puesta en marcha.

USG

USG era un cliente de Oracle Hyperion y se dio cuenta de que necesitaba soporte más especializado para sus diversas aplicaciones de Oracle Hyperion.

Vantiv

¿Dividir una aplicación de planificación de Hyperion y ampliar la huella de Hyperion para pronosticar el negocio? Categorías de clientes.

Versant Health

Versant Health contrató a MindStream para ayudar a resolver los desafíos que estaban experimentando con sus procesos de consolidación, cierre e informes financieros.

Virginia Space Authority

El equipo de MindStream implementó Standard + Workforce NetSuite Planning & Budgeting.

WeWork

MindStream Analytics determinó que la mejor solución era implementar Oracle Essbase Cloud como parte de la plataforma como servicio Oracle Analytics Cloud (OAC).

WindStream

Uso innovador de essbase para optimizar y conectar la gestión financiera de Hyperion para mejorar el análisis financiero.

XY Planning

MindStream Analytics, experto en abordar estos desafíos, presentó una solución integral de Netsuite para XY Planning.

Enlaces Relacionados