3. ¿Qué son Aplicaciones Web?
En la ingeniería de software se
denomina Aplicación Web a
aquellas herramientas
informáticas que los usuarios
pueden utilizar accediendo a
un servidor web a través de
Internet o de una intranet,
normalmente accediendo
mediante un navegador web.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
3
4. Ventajas de usar App Web
• Usan un cliente ligero (Navegador web)
• No dependen del Sistema Operativo usado
• No hay instalaciones y no ocupa el espacio
correspondiente en disco
• Facilidad para la distribución y actualización
• Enorme número de clientes potenciales
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
4
5. Lenguajes más usados
Estas aplicaciones se codifica en
un lenguaje soportado por los
navegadores web, algunos de
estos lenguajes son:
PHP
Java (Java Servlets y JavaServer
Pages (JSP))
Javascript
Perl
Python
Ruby (Ruby on Rails)
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
5
6. Cómo funcionan las App Web
Está normalmente estructurada por tres capas:
I. El navegador web ofrece la primera capa (la
interfaz que se muestra al usuario) .
II. Motor capaz de usar alguna tecnología web
dinámica, por ejemplo las mencionadas
anteriormente.
III. Una base de datos constituye la tercera y última
capa
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
6
7. Cómo funcionan las App Web
El navegador web manda peticiones a la capa
intermedia, y ésta ofrece servicios por medio de
consultas y actualizaciones a la base de datos y a
su vez proporciona una interfaz de usuario.
Una página Web puede contener elementos que
permiten una comunicación activa entre el
usuario y la información. Esto permite que el
usuario acceda a los datos de modo interactivo,
gracias a que la página responderá a cada una de
sus acciones, como por ejemplo rellenar y enviar
formularios o cualquier tipo de juego.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
7
8. Cómo funcionan las App Web
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
8
9. Problemas de seguridad en
Aplicaciones Web
El tema de la creación de una Aplicación Web segura es muy
amplio ya que requiere realizar un estudio para conocer y
comprender las vulnerabilidades.
Es esencial entender cómo usar estas características de
seguridad para enfrentarse a las amenazas, ya que con una
Aplicación Web se da un servicio a los usuarios, éstos, en la
mayoría de los casos, introducen y confían sus datos y sus
asuntos privados, así que para ofrecer un buen servicio a
aquellos que han confiado en usar la aplicación web hay que
mantener seguro y proteger sus datos e información
confidencial.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
9
10. Pautas a seguir para crear App
Web Segura
Aunque a la hora de crear una aplicación web no se tenga
mucha experiencia en seguridad, existen unas medidas
básicas que siempre se deberían de adoptar para proteger
cualquier aplicación web.
A continuación proporcionaré una lista de medidas de
seguridad mínima que se deberían aplicar a todas las
Aplicaciones Web.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
10
11. 1. Recomendaciones generales
de seguridad en el servidor
Utilizar firewall y establecer programas antivirus para
supervisar el trafico entrante y saliente.
Mantener todo el software instalado totalmente actualizado.
Ubicar el equipo del servidor en un lugar físico seguro.
Cierra los puertos que no se utilicen
y desactive los servicios no usados.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
11
12. 2. Ejecutar aplicaciones con
privilegios mínimos
No ejecutar la aplicación identificado como el administrador
del sistema.
Ejecutar la aplicación con un usuario con los mínimos
privilegios posibles.
Mantener los archivos de la aplicación web en una carpeta
ubicada debajo del raíz de la aplicación.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
12
13. 3. Protegerse contra entradas
malintencionadas
Nunca dar por segura del todo una aplicación web ya que a
los usuarios malintencionados les resulta fácil enviar
información potencialmente peligrosa desde el cliente a la
aplicación.
Establecer filtros.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
13
14. 4. Mantener segura la
información confidencial
Si la aplicación transmite información confidencial entre el
explorador y el servidor, utilizar el protocolo SSL.
Utilizar algoritmos de cifrado de alta seguridad.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
14
15. 5. Usar cookies de forma segura
No almacenar información vital en cookies.
Establecer el período de tiempo mínimo posible para la
fecha de expiración de las cookies.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
15
16. 6. Protegerse contra amenazas
de denegación de servicio
Establecer límites de tamaño para consultas a bases de datos
o subida de archivos.
Configurar servidor para utilizar la regulación de procesos,
que evita que una aplicación use una cantidad
desproporcionada de la CPU.
Seguir otras medidas
recomendadas para este
tipo de ataque.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
16
17. 7. Acceso seguro a bases de
datos
Usar el sistema de seguridad de la base de datos para limitar
quién puede tener acceso a los recursos de dicha base.
Si la aplicación utiliza el acceso anónimo, crear un único
usuario con permisos muy limitados,
y hacer que las consultas se ejecuten
conectándose como dicho usuario.
No crear instrucciones SQL
concatenando cadenas que contengan
información aportada por los usuarios.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
17
18. 8. Crear mensajes de error
seguros
• No escribir mensajes de error que presenten información
que pudiera resultar útil a los usuarios malintencionados,
como un nombre de usuario.
• Configure la aplicación para que no muestre errores
detallados a los usuarios.
• Controlar bien las excepciones.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
18
19. SQL Injection
Este tipo de ataque consiste en inyectar código SQL en una
sentencia SQL ya programada, con el fin de alterar el
funcionamiento de la base de datos. Consiste en generar
consultas a la base de datos para que nos devuelva datos de
interés, como usuarios, contraseñas, información personal de los
clientes, etc...
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
19
20. Aplicaciones Web Anti-SQLi
Conocido el problema, ahora hay que poner una solución. Para
que una aplicación web no tenga esta vulnerabilidad, las medidas
que hay que tomar depende del lenguaje que se esté usando
para acceder a la base de datos, a continuación mostraré unos
ejemplos de cómo evitar SQLi en lenguajes comunes:
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
20
21. App Web Anti-SQLi: PHP
En el lenguaje PHP, hay diferentes funciones que pueden servir
de ayuda para usar con distintos sistemas de gestión de bases de
datos. Si se usa MySQL, la función a usar es
mysql_real_escape_string:
$query_result = mysql_query("SELECT * FROM usuarios WHERE
nombre = "" . mysql_real_escape_string($nombre_usuario) .
""");
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
21
22. App Web Anti-SQLi: Ruby
En el Framework Ruby on Rails las consultas son verificadas
automáticamente por cualquiera de los métodos de
búsqueda incluidos. Por ejemplo:
Project.find(:all, :conditions => ["name = ?",
params[:name]])
La única forma de que un usuario mal intencionado pueda
usar una inyección de SQL en RoR es que mediante código
se transforme la variable a tipo string y se utilice como
argumento de la búsqueda directamente.
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
22
23. App Web Anti-SQLi: Perl
En lenguaje Perl, el método DBI::quote filtra los caracteres
especiales:
$query = $sql->prepare
(
"SELECT * FROM usuarios WHERE nombre = "
.
$sql->quote($nombre_usuario)
);
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
23
24. App Web Anti-SQLi: Java
En lenguaje Java, se puede usar la clase PreparedStatement:
Connection con = (acquire Connection)
PreparedStatement pstmt = con.prepareStatement("SELECT *
FROM usuarios WHERE nombre = ?");
pstmt.setString(1, nombreUsuario);
ResultSet rset = pstmt.executeQuery();
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
24
25. App Web Anti-SQLi: 'or'1'=1
La solución consiste en no concadenar los campos en la select
que se va a usar para verificar un usuario y contraseña, un
ejemplo de mal configuración:
Select id
from t_usuarios
where usuario='$usuario' and pass='$pass';
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
25
26. App Web Anti-SQLi: 'or'1'=1
Otro ejemplo:
Francisco José Cruz Jiménez
Aplicaciones Web Seguras
26