Está en la página 1de 4

Desarrollo Web Integral

Unidad 3. Integración de Componentes

BUENAS PRACTICAS DE CODIFICACIÓN SEGURA

1. Validación de entrada de datos

Esto cubre numerosos aspectos de la fuente de datos y la validación de su entrada.


La mayoría de amenazas a la ciberseguridad provienen de la introducción de datos
externos en la forma de scripts de sitios, desbordamientos de búfer y ataques por
inyección.

Por eso, es crucial establecer prácticas de seguridad que rijan qué fuentes son
fiables y cómo serán verificados los datos de fuentes no fiables.

2. Autenticación y gestión de contraseñas

Limitar el acceso del programa a usuarios autorizados es una forma efectiva de


prevenir ciberataques y brechas de datos. Algunas de las mejores prácticas para la
autenticación y la gestión de contraseñas incluyen:

 Usar un sistema fiable de hash de contraseñas


 Imponer unos requerimientos en cuanto a la longitud y complejidad de las
contraseñas
 Almacenar las credenciales de autenticación en un servidor de confianza
 Usar la autenticación multifactorial

3. Control de acceso

El control de acceso va de la mano con la autenticación para asegurar que un


usuario con malas intenciones no pueda conseguir fácilmente acceso al sistema
que quiere atacar. Como regla general, es mejor adoptar una aproximación de
denegación por defecto, lo que significa que los usuarios que no pueden
demostrar autorización se les debe denegar el acceso. Para aplicaciones web que
implican largos periodos de uso, el código debe pedir periódicamente la
reautorización para un acceso sostenido.

Mtro. David Humberto Jiménez Camacho


Desarrollo Web Integral
Unidad 3. Integración de Componentes

4. Mantenerlo simple

Aunque esto tal vez no sea muy intuitivo, mantener tu código simple y limpio es una
fantástica forma de asegurar su seguridad. Esto se debe por qué los diseños
complejos aumentan la probabilidad de que las vulnerabilidades crezcan
dentro del código. Los desarrolladores deben evitar complejidades innecesarias al
escribir software e incluir solo lo esencial.

5. Prácticas criptográficas

Los estándares de codificación segura mencionados antes remarcan la importancia


de implementar procesos criptográficos efectivos para proteger secretos del
usuario de la aplicación. Todos los valores aleatorios generados como parte de
procesos criptográficos deben ser generados usando un generador de números
aleatorios aprobado para asegurar que no pueden adivinarse.

6. Gestión de errores y registros

Incluso los códigos mejor escritos pueden tener errores. Lo importante es que
cuando un error aparece, sea identificado y se trate lo antes posible para contener
su impacto.

La identificación precisa de errores depende de registrar de forma efectiva todos los


eventos que ocurren en el código. Los desarrolladores pueden acceder a estos
registros, o logs, para diagnosticar cualquier error que puede haber aparecido. ¡Pero
sé cauteloso de no incluir información sensible en los mensajes de error o en
los registros!

7. Protección de datos

El objetivo de muchos ciberataques es acceder a datos sensibles. Así pues, no es


una sorpresa que la protección de datos sea un aspecto importante en los

Mtro. David Humberto Jiménez Camacho


Desarrollo Web Integral
Unidad 3. Integración de Componentes

requerimientos de la codificación segura. Algunos consejos útiles para proteger


efectivamente datos incluyen:

 Adherirse al principio del mínimo privilegio. Por ejemplo, elementos del


código deben ejecutarse con el mínimo conjunto de privilegios necesarios
para completar la tarea
 Borrado regular de copias temporales o de caché sensibles almacenadas en
el servidor
 No almacenar contraseñas ni cadenas de conexión en texto no cifrado o en
cualquier otra forma no cifrada en el lado del cliente

8. Modelado de amenazas o threat modeling

Es complicado, si no imposible, protegerte contra amenazas de las que no sabes


nada. Por eso el modelado de amenazas es tan importante. Involucra
la identificación de potenciales amenazas para, a continuación, definir
contramedidas para prevenir o mitigarlas en caso de que ocurran. Debe hacerse
de forma regular un ejercicio de modelado de amenazas para asegurar que no se
han dejado fuera nuevos riesgos.

9. Más allá del código

Implementar las pautas anteriores debe ayudar a evitar que la mayoría de


vulnerabilidades enraícen en el propio código. Sin embargo, garantizar que tu
código es seguro es un proceso continuo y requiere de una vigilancia
constante. Otras áreas que necesitan ser parte de una aproximación integral para
crear código seguro incluyen:

1. Un sistema basado en el «mínimo privilegio»: Mantener el acceso a


cualquier código en base a solo poder acceder a él si es necesario, ayudará
a prevenir ataques por inyección. Esto puede ser particularmente complicado
cuando usamos desarrolladores externos o empresas de desarrollo.
2. Defensa en profundidad: Mantener estrategias defensivas por capas a
medida que el código avanza durante la producción. Asegúrate de que los
ambientes de ejecución son tan seguros como tu código.
3. Ejercer la seguridad de buena calidad: Usa varios procesos de seguridad
como las revisiones de seguridad y el test PEN para asegurar la calidad.

Mtro. David Humberto Jiménez Camacho


Desarrollo Web Integral
Unidad 3. Integración de Componentes

4. Entender cómo aplicar el ciclo de vida del desarrollo del software (SDLC
en sus siglas en inglés) para asegurar el código. Usando un enfoque SDLC
te ayudará a asegurar que hay filtros de seguridad en todas las partes del
ciclo de vida del desarrollo.

Mtro. David Humberto Jiménez Camacho

También podría gustarte