Seguridad en aplicaciones corporativas

Cuando se realizan aplicaciones corporativas es necesario tener en cuenta muchos aspectos a nivel de seguridad que para aplicaciones de usuario común o aplicaciones que corren dentro de una intranet.

Autenticación y perfilación:

  • Numero de intentos de ingreso: en aplicaciones que corren en intranet o no son corporativas no se le tiende a dar importancia a este tema, pero si hablamos de una aplicación corporativa expuesta a internet es importante controlar el numero de intentos de acceso generalmente se usan 3 intentos luego se debe mostrar un captcha o en casos mas extremos deshabilitar el equipo o desactivar el usuario.
  • Perfilar el código y funcionalidades: es importante perfilar cada uno de los servicios que se usan en el sistema para que solo puedan ser consumidos por los roles que se asignen en el sistema de esta manera solo cuando el admin este autenticado podrá consumir los servicios mas críticos con información sensible del sistema.
  • Establecer roles específicos en el sistema: es sumamente importante que en el sistema se establezcan roles específicos y que no todo sea simplemente a través de permisos, de tal manera que sea fácil capturar el rol del usuario autenticado o incluso si es admin para así especificar que puede y que no,de esta manera se brinda mas seguridad que simplemente asignado solo los permisos pues cualquier usuario con privilegios puede darle permiso a los demás

Eliminar todos los datos de sesión:

Todos los datos de sesión borrados: Es importante borrar todos los datos de sesión cookies cache y demás de datos creados para que no quede rastro de la sesión del usuario, para cookies por ejemplo se pude usar este script:

function deleteAllCookies() { var cookies = document.cookie.split(";"); for (var i = 0; i < cookies.length; i++) { var cookie = cookies[i]; var eqPos = cookie.indexOf("="); var name = eqPos > -1 ? cookie.substr(0, eqPos) : cookie; document.cookie = name + "=;expires=Thu, 01 Jan 1970 00:00:00 GMT"; } }

Encriptar todos los datos sensibles:

Todos los datos que viajan en la red que representan información sensible de la aplicación como rutas, contraseñas, datos de usuario, algún dato especial del usuario, el rol del sistema y demás, deben viajar encriptados desde la base de datos “desencriptarse” solo en el momento preciso en que se van a mostrar o usar para cualquier usuario incluyendo el admin.

También es importante encriptar todas las cookies y datos de sesión aunque su información no sea tan relevante para un atacante, pero esto garantiza que no se pueda alterar por ejemplo un true a un false.

Controlar todos los errores del sistema:

Cada vez que se genera un error el sistema expone información sensible, por ellos es importante que todos los servicios y las interfaces tenga controles que permitan identificar errores y notificar al usuario y adicional un control de errores general que saldrá en caso tal de que cualquier error no controlado ocurra.

Para el caso por ejemplo de Asp.Net solo se coloca una clausula en el web.config

<!-- wp:paragraph -->
<p><span style="color: #222222;"><span style="font-family: Consolas, monospace;">&lt;system.web&gt;</span></span></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><span style="color: #222222;"><span style="font-family: Consolas, monospace;">&lt;customErrors mode="On" defaultRedirect="mycustompage.htm"/&gt;</span></span></p>
<!-- /wp:paragraph -->

<!-- wp:paragraph -->
<p><span style="color: #222222;"><span style="font-family: Consolas, monospace;">&lt;/system.web&gt;</span></span></p>
<!-- /wp:paragraph -->

Pueden encontrar buenas practicas y ejemplos en cuanto a seguridad de aplicaciones en esta pagina:

https://www.owasp.org/