Este documento discute el desarrollo de aplicaciones empresariales con enfoque en la seguridad. Explica conceptos como validación de usuarios, tokenización, autenticación mejorada, uso de Google Sign On, seguridad de archivos y bases de datos locales. También cubre temas como configuración de redes seguras, árboles de procesos de tokenización y inspecciones de proyectos.
3. Usuarios del SistemaUsuarios del SistemaUsuarios del SistemaUsuarios del Sistema
Gerentes y JefesGerentes y JefesGerentes y JefesGerentes y Jefes
AdministradoresAdministradores
y Monitoresy Monitores
AdministradoresAdministradores
y Monitoresy Monitores
Estructura empresarial...
ServidoresServidoresServidoresServidores
5. Desarrollo orientado a la Seguridad
Transport LayerTransport Layer
Container Layer –Container Layer –
SOAP LayerSOAP Layer
Application LayerApplication Layer
6. Transpor Layer
Cleartext traffic opt-outCleartext traffic opt-out: Disable cleartext traffic.
Custom trust anchorsCustom trust anchors: Specify Certificate Authorities and sources that the app
trusts.
Debug-only overridesDebug-only overrides: Safely debug secure connections without affecting release
builds.
Certificate pinningCertificate pinning: Restrict secure connections to particular certificates.
7. Conf. De Seguridad de Redes
1. Crear network_security_config.xml dentro la carpeta res de la App
2. Agregar el siguiente código:
<network_security_config>
<base-config cleartextTrafficPermitted="false"></base-config>
</network_security_config>
3. Agregar la configuración al Android Manifiest:
android:networkSecurityConfig="@xml/network_security_config"
Nota: Estos parámetros admiten una gran variedad de configuraciones
adicionales.
8. Validación estilo Web
1. Autenticación – validación WEB.
Usuario → vladimircs
Password → MD5(vlad) → f(x) donde x es el password
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
<ns2:validateUser xmlns:ns2="http://validation/">
<user>vlad</user>
<pass>dementor</pass>
</ns2:validateUser>
</S:Body>
</S:Envelope>
9. Validación Mejorada
1. Autenticación Mejorada para Webservices
Usuario → vladimircs
Password → → f(x,n,a) => x = password, n = cifrado, a = raíz de separación
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"
xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
<SOAP-ENV:Header/>
<S:Body>
<ns2:trackUser xmlns:ns2="http://hello/">
<p1>vlad5kudtr88d3m3nt0r5kudtr883</p1>
</ns2:trackUser>
</S:Body>
</S:Envelope>
10. Usar Sign On de Google
1. https://console.developers.google.com/cloud-resource-manager
2. Crear Proyecto Nuevo
3. Menu Api y Servicios
4. Habilitar API y Servicios
5. Seleccionar Google+ API
6. Seleccionar credentials en el menu lateral
7. Seleccionar pantalla de consentimiento Oauth y proveer los datos requeridos
8. Seleccionar la pantalla credenciales
9. En el menu crear credenciales, seleccionar ID de Cliente de Oauth
10. Rellenar los datos y obtener el certificado de la maquina android con el siguiente
comando :
sudo /opt/jdk8/bin/keytool -J-Duser.language=en -list -v -keystore
~/.android/debug.keystore -alias androiddebugkey -storepass android -keypass
android
11, Guardar y la aplicación esta lista para ser creada.
11. Active Token
Tokenizacion de apps
Validate
Sel Cuenta
Transferencia
Saldo 205851
205689
205989
Aplication Server
205599
205599
205689
205851
205989
12. Active Token
Tokenizacion de apps
205599
205689
Aplication Server
205599
1. Solicitud+KT
2. Token
3. Solicitud +KT 4. Token
5. Solicitud C
14. Active Token
Tokenizacion Arbol de Procesos
205599
205589
Aplication Server
205565
1. Solicitud A
2. F(xk)
4. Solicitud + KT
3. Solicitud +KT
205603
4. OK
15. Seguridad de Archivos Locales
<note_node>
<head_eleement>Critican sentencia a exejecutivos de Misicuni</head_eleement>
<resume>En noviembre de 2013 Misicuni resolvió contrato con el CHM por iliquidez</resume>
<note_detail>En noviembre de 2013 Misicuni resolvió contrato …….</note_detail>
<validation></validation>
</note_node>
<note_node>
<head_eleement>Sistema Misicuni opera con sus tres componentes</head_eleement>
<resume>El Proyecto Múltiple Misicuni ya trabaja de forma parcial.</resume>
<note_detail>El Proyecto Múltiple Misicuni ya trabaja de forma parcial en sus tres
componentes (agua para consumo, riego y energía). Se espera que los ...</note_detail>
<validation></validation>
</note_node>
<note_node>
<head_eleement>inspección al proyecto múltiple misicuni- ENDE Corporación</head_eleement>
<resume>INSPECCIÓN AL PROYECTO MÚLTIPLE MISICUNI</resume>
<note_detail>Este sábado 18 de marzo se realizó ...</note_detail>
<validation></validation>
</note_node>
16. … con archivos locales
1. Utilizar solo los accesos que verdaderamente la aplicación requiera
2. Eliminar Accesos concedidos en ejecución para que el emulador utilice los
nuevos permisos
adb shell pm reset-permissions
3. Usar el Framework de acceso a almacenamiento puede representar siempre
un riesgo de seguridad.
StorageManager sm = (StorageManager)getSystemService(Context.STORAGE_SERVICE);
StorageVolume volume = sm.getPrimaryStorageVolume();
Intent intent = volume.createAccessIntent(Environment.DIRECTORY_PICTURES);
17. Bases de Datos locales
1. Almacenar preferentemente información que se pueda tener como un sistema
de cache intermedio (solo información que nos interese tener como rápido
acceso)
2. Nunca almacenar datos sensibles de clientes, usuarios, localizaciones.
3. Siempre tener en mente que una persona que tiene acceso a una terminal
podría acceder a la base de datos interna… por lo tanto nunca se debe
almacenar lógica de negocio.
4. Los datos almacenados localmente deben estar asociados unicamente a un
usuario. Por consiguiente es muy importante eliminar estos datos