Seguridad de la aplicación
Toda aplicación web, especialmente si es una aplicación web pública, como un sitio web, debe de estar protegida contra diversos ataques. Los comunes son:
-
SQLi (SQL injection) Es el ataque más común y uno de los más dañinos contra aplicaciones web. El ataque consiste en 'inyectar código SQL' sobre webs que no han sido saneadas, que aceptan los datos enviados desde el cliente sin hacer validación alguna y que los usan para generar consultas a su base de datos. De esta manera, el atacante puede inyectar parámetros en formulario, vía peticiones GET en la url de la página, etc., y obtener mediante ellos acceso a su base de datos o host mediante ellas. Si el atacante tendrá acceso a la base de datos, puedes tener mucho daño, incluso podrían demandarte por negligente.
-
LFI/RFI Este ataque consiste en aprovechar una vulnerabilidad en una página específica donde se incluyen ficheros dentro de la página (require_once
) por medio de parámetros query, por ejemplo: require_once "fichero"
| pagina.php?fichero=contactos.php
. Si el atacante expone el fichero de passwords (en GNU/Linux es bien sabido) te verás en serios aprietos.
- XSS Este ataque tiene 2 variantes populares:
XSS reflejado
(más común) y XSS persistence
(el más peligroso). El XSS reflejado consiste en ejecutar código JavaScript en la web víctima, mientras que el XSS persistence permite "persistir" código SQL en el backend, así este será ejecutado en todo cliente que tenga disponible. Por ejemplo, si logras inyectar código JavaScript para robar cookies y todos los clientes conectados lo ejecutan, tendrás las cookies de todos ellos y por lo tanto, acceso a sus cuentas.
Y hay muchos más ataques de los cuales debes tener conciencia cuando realizas un sitio o aplicación web. La moraleja es: Nunca confíes en el cliente.
Protocolo HTTPS
Primero debes tener activado el módulo SSL en Apache, que hoy en día todo hosting lo tiene, y tienes que generar una clave pública (certificado) de tu servidor y que tiene que verificar alguna empresa como VerySing
.
Garantizar la integridad de la base de datos
Ver punto 1, concepto SQL injection
. Este es el punto de partida para tener una aplicación segura. Combinado con otros tipos de defensas, hace menos probable que un cracker tenga acceso al sistema.
Calidad del host
- Debe ser un host con reputación y buenos comentarios.
- Debe tener una buena relación precio/oferta.
- Debe de tener buen soporte.
El resto ya es dependiendo de lo que tu aplicación necesite (ancho de banda, almacenamiento, versiones de PHP, NET Framework, Java, Python, Ruby, etc.