D&5@r0ll@nd0 @pl1c@c10n&5
@p&x 5&6ur@5
@nd&r50n F&rr&1r@
Desarrollando aplicaciones Apex
seguras
Anderson Ferreira
Quién soy
● Anderson Ferreira
– Ingeniero en Computación
– Posgrado en Seguridad de la Información
– MBA en Gestión de TI
– Gestiona y desarolla más de
15 sistemas en Apex
Aviso
● Las opiniones aquí expresadas
son mis opiniones personales!
● Preguntas sólo al final!
● El español no es mi lengua materna,
por favor sea paciente!
Sumario
● Introducción
● Principales dispositivos de seguridad en Apex
– Autenticación
– Autorización
– Protección de Estado de la Sesión
● Principales amenazas
– URL tampering
– Inyección SQL
– Cross-site scripting
● Conclusión
Sumario
✔ Introducción
● Principales dispositivos de seguridad en Apex
– Autenticación
– Autorización
– Protección de Estado de la Sesión
● Principales amenazas
– URL tampering
– Inyección SQL
– Cross-site scripting
● Conclusión
Introducción
● ¿Qué es la seguridad de la información?
Introducción
● “El costo de la seguridad no puede ser mayor
que el activo”
● Pero tienes que invertir en seguridad!!
Sumario
✔ Introducción
✔ Principales dispositivos de seguridad en Apex
✔ Autenticación
– Autorización
– Protección de Estado de la Sesión
● Principales amenazas
– URL tampering
– Inyección SQL
– Cross-site scripting
● Conclusión
Autenticación
● Establece la identidad del usuario antes del
acceso a la aplicación
Autenticación
Autenticación
Autenticación
● Evite desarrollar con la aplicación pública
– Open Door Credentials
– No Authentication (using DAD)
Sumario
✔ Introducción
✔ Principales dispositivos de seguridad en Apex
✔ Autenticación
✔ Autorización
– Protección de Estado de la Sesión
● Principales amenazas
– URL tampering
– Inyección SQL
– Cross-site scripting
● Conclusión
Autorización
● Define lo que una persona puede hacer en la
aplicación
● Se puede asociar a (entre otros):
aplicación
regiones
botones
páginas
elementos
procesos
Autorización
Autorización
Autorización
● Si desea que un componente no sea ejecutado,
bloquee el componente, no sólo los caminos de
llegar a él.
● Ejemplo:
– Si no puede acceder a una página, debe bloquear
la página y no sólo los enlaces que llevan a la
página.
link
páginas
Sumario
✔ Introducción
✔ Principales dispositivos de seguridad en Apex
✔ Autenticación
✔ Autorización
✔ Protección de Estado de la Sesión
● Principales amenazas
– URL tampering
– Inyección SQL
– Cross-site scripting
● Conclusión
Protección de Estado de la Sesión
● URL Apex
f?p=
app:page:session:request:debug:cache:input
parameters:values:printerfriendly
“Apex programmers smartly request double
cache in virtual programs”
Protección de Estado de la Sesión
● Checksum valida que no ha cambiado:
– Nombre o Valor del elemento
– Request (Solicitud)
– Borrar caché
– Otros (Vamos a ver!) - Usuario o Sesión
Protección de Estado de la Sesión
Aplicación
1º paso
Página
Elemento
2º paso
Protección de Estado de la Sesión
Protección de Estado de la Sesión
Genera un nuevo SALT para el checksum (total de control)
Protección de Estado de la Sesión
Protección de Estado de la Sesión
Protección de Estado de la Sesión
Protección de Estado de la Sesión
Protección de Estado de la Sesión
Favorito público
Favorito privado
Protección de Estado de la Sesión
● Función que genera el checksum:
APEX_UTIL.PREPARE_URL (
p_url IN VARCHAR2,
p_url_charset IN VARCHAR2 default null,
p_checksum_type IN VARCHAR2 default null)
RETURN VARCHAR2;
SESSION
PRIVATE_BOOKMARK
PUBLIC_BOOKMARK
3
2
1
Sumario
✔ Introducción
✔ Principales dispositivos de seguridad en Apex
✔ Autenticación
✔ Autorización
✔ Protección de Estado de la Sesión
✔ Principales amenazas
✔ URL tampering
– Inyección SQL
– Cross-site scripting
● Conclusión
Principales amenazas
● No intente esto en casa!
● Puede ser peligroso!
Principales amenazas
● Apex sufre las mismas vulnerabilidades de
otras tecnologías web!
URL Tampering
● Modificación de la dirección URL con el fin de
realizar acciones que no son deseables, tales
como:
– cambiar los parámetros,
– realizar acciones no autorizadas en la base de datos o
– acceder páginas no permitidas.
URL Tampering
● Ejemplo:
– Sistema de tienda virtual
● (Acceso a los pedidos no autorizados)
● (Acceso a las páginas no utilizadas)
● (Modificación de los precios de los pedidos)
URL Tampering
● ¿Cómo evitar URL Tampering?
– Protección de Estado de la Sesión
– Cláusula WHERE
– VPD (Virtual Private Database)
● Solo en Enterprise Edition
URL Tampering
● ¿Cómo evitar URL Tampering?
– Efectúe siempre las validaciones del lado del
servidor
– Las páginas no utilizadas no pueden ser accesibles
● Eliminar o dejar sin acceso URL
Sumario
✔ Introducción
✔ Principales dispositivos de seguridad en Apex
✔ Autenticación
✔ Autorización
✔ Protección de Estado de la Sesión
✔ Principales amenazas
✔ URL tampering
✔ Inyección SQL
– Cross-site scripting
● Conclusión
Inyección SQL
● Se inserta comandos SQL maliciosos
en la aplicación, que pueden generar:
– acciones no deseadas (eliminación de datos o
tablas, cambio de información, etc.); o
– acceso no autorizado a los datos (contraseñas,
datos sensibles, etc.)
● Objetivo: La base de datos
Inyección SQL
● Ejemplo:
● Campo de búsqueda vulnerable
– Acceso no autorizado (1 OR 1=1)
– Consulta de más informaciones (UNION)
– Drop table/Update table (1; DROP TABLE my_table)
Inyección SQL
SELECT *
FROM orders
WHERE order_id = &PX_ORDER_ID.
1 OR 1=1
1 UNION
SELECT login, password,
credit_card, address
FROM customers
1; DROP TABLE access_log
Inyección SQL
● ¿Cómo evitar Inyección SQL?
– Evite sustitución / concatenación
● Utilice variables de enlace o "función v"
– Cuidado con SQL dinámico!
– Siempre realize la validación en el lado del servidor
● No confíe en javascript
Inyección SQL
● ¿Cómo evitar Inyección SQL?
– Utilice campos de tamaño apropiado
– Evite datos sensibles en claro en la base de datos
– Limite los privilegios de acceso
Sumario
✔ Introducción
✔ Principales dispositivos de seguridad en Apex
✔ Autenticación
✔ Autorización
✔ Protección de Estado de la Sesión
✔ Principales amenazas
✔ URL tampering
✔ Inyección SQL
✔ Cross-site scripting
● Conclusión
Cross-site scripting
● XSS
● Objetivo: Otros usuarios (navegador interpreta
el código malicioso en javascript)
Cross-site scripting
● Se puede robar los datos o la sesión del
usuario
Cross-site scripting
● Ejemplo
– Página de comentario
● insertando script en la entrada del usuario
Cross-site scripting
● ¿Cómo evitar XSS ?
– Debe escapar la entrada del usuario
● htf.escape_sc
– Siempre realizar la validación en el lado del
servidor
Sumario
✔ Introducción
✔ Principales dispositivos de seguridad en Apex
✔ Autenticacción
✔ Autorización
✔ Protección de Estado de la Sesión
✔ Principales amenazas
✔ URL tampering
✔ Inyección SQL
✔ Cross-site scripting
✔ Conclusión
Conclusión
Conclusión
● Apex tiene varios dispositivos de seguridad
Protección de estado de la sesión
Autorización
Autenticación
Conclusión
● Apex es seguro!
● Las personas dejan las aplicaciones inseguras!
¿Preguntas?
[email protected]
Comentarios de: Desarrollando aplicaciones Apex seguras (0)
No hay comentarios