Seguridad web
Enviado por Itzel Carrillo • 3 de Julio de 2021 • Documentos de Investigación • 2.052 Palabras (9 Páginas) • 91 Visitas
[pic 1]
[pic 2]
[pic 3][pic 4]
Seguridad web
¿Qué es?
De acuerdo con Eulises (2019):
Es un elemento decisivo para proteger sitios web y servidores. Los sitios web se analizan en busca de futuras vulnerabilidades y programas malignos, a través del software de seguridad del sitio web.
La seguridad del sitio web es todo tipo de acción o aplicación tomada para garantizar que los datos del sitio web no estén expuestos a las personas que hagan mal uso de él o para evitar la explotación de los sitios web de cualquier manera.
Principios de codificación segura
- Abuso de API.
Este es un contrato entre quien realiza la petición y quién responde, sin embargo, el problema comienza cuando se viola el contrato. Quien realiza la petición la hace incorrectamente violando el contrato de funcionalidad. Los problemas que causa esta violación de contrato son: “Heap Inspection”, “Directory Restriction”, “Unchecked Return Value”, etc. “A. Hernández (2019)”
- Actualizaciones.
Hacer un seguimiento de las tecnologías utilizadas para el desarrollo. Estas van evolucionando y cualquier mejora que se haga puede dejar obsoleta o inseguras versiones anteriores. “Sebastián (2014)”
- Ambiente.
Este incluye todo lo que está fuera de nuestro código y es crucial considerarlo ya que son parte de nuestro producto. Dentro de este punto se consideran malas configuraciones del propio servidor, compilador, de la red, etc. Para poder evaluar nuestro ambiente es necesario realizar un modelado de amenazas correcto para así poder proteger nuestros activos. “A. Hernández (2019)”
- Calidad de código.
Una calidad baja en el código puede producir comportamientos inesperados, lo que para un atacante es una ventaja que puede aprovecharse para comprometer el sistema. “A. Hernández (2019)”
- Características de seguridad.
En este punto lo que debe tenerse claro, es que un número pseudoaleatorio no soportan ataques criptográficos, también el almacenar contraseñas en texto plano o codificarlas es un riesgo de seguridad o el no tener un control de acceso correcto puede llevar a la ejecución de paths. “A. Hernández (2019)”
- Concepciones erradas del programador.
Entender el uso y características del lenguaje empleado, evitar las ambigüedades en la programación. “J. Manuel (2020)”
- Confiabilidad.
Evitar las técnicas oscuras como los atajos, la declaración de variables con significado, código fácil de entender y de dar mantenimiento. “J. Manuel (2020)”
- Documentar cambios.
Cualquier cambio que se haga debería quedar documentado, esto facilitará modificaciones futuras. “Sebastián (2014)”
- Encapsulación.
Se tienen que crear límites fuertes. Esto quiere decir que se debe diferenciar la información validada y la que no lo es, así como lo que un usuario puede visualizar y lo que no debe de ver. El no encapsular correctamente la información significa un riesgo para la seguridad y privacidad. “A. Hernández (2019)”
- Errores.
Los errores no controlados son comunes. Existen dos maneras de crear un error de seguridad. Errores no controlados correctamente y crear errores que brinden información. El correcto control de errores desde el desarrollo del software es de vital importancia ya que estos pueden brindar información útil o ser aprovechados como pivotes para un atacante. “A. Hernández (2019)”
- Lenguaje sencillo.
Si se utiliza un lenguaje que no sea compilado, asegurarse de limpiar el código que se pone en producción, para que no contenga rutinas de pruebas, comentarios o cualquier tipo de mecanismo que pueda dar lugar a un acceso indebido. “Sebastián (2014)”
- Modelo de permisos mínimos.
Es mejor ir escalando privilegios por demanda de acuerdo con los perfiles establecidos en las etapas de diseño. “Sebastián (2014)”
- No almacenar en móviles o de uso diario.
La información almacenada en dispositivos móviles debería ser la mínima, y más si se trata de contraseñas o datos de sesión. Este tipo de dispositivos son los más propensos a ser que se pierdan y por lo tanto su información puede ser expuestas más fácilmente. “Sebastián (2014)”
- Programación defensiva.
Los componentes del proyecto deben protegerse a sí mismos, definir el alcance que se desea tener y a que recursos se tiene accesibilidad, Documentación del código, simplicidad y robustez. “J. Manuel (2020)”
- Seguridad.
El lenguaje y el JRE fueron diseñados con la seguridad en mente y se tienen problemas como: manejo de datos sensibles, ataque de inyección de código y lenguaje mal usado. “J. Manuel (2020)”
- Tiempo y estado.
Este refiere a la computación distribuida que se basa en estados y tiempos. Los sistemas actuales ofrecen características multi-core, multi-cpu o sistemas distribuidos, en los que dos eventos pueden tener lugar al mismo tiempo. Es importante estar consciente de que lo que se ejecuta y lo que pasa en realidad es muy diferente. “A. Hernández (2019)”
- Uso de protocolos.
Para intercambiar información sensible utilizar protocolos para cifrar las comunicaciones, y en el caso de almacenamiento la información confidencial debería estar cifrada utilizando algoritmos fuertes y claves robustas. “Sebastián (2014)”
- Validación de entrada y representación.
Es de las vulnerabilidades más persistentes en el software lo causan metacaracteres, codificaciones alternadas, representaciones numéricas donde no son controladas correctamente las entradas y se confía en que el usuario las use correctamente. Todo input debe ser sanitizado y validado. Las vulnerabilidades que esto genera son: “Buffer Overflows”, “Cross-Site Scripting” attacks, “SQL Injection”, etc. “A. Hernández (2019)”
...