Guía Desarrollo de Software - Consulta Pública - NO EDITAR
August 1, 2022 | Author: Anonymous | Category: N/A
Short Description
Download Guía Desarrollo de Software - Consulta Pública - NO EDITAR...
Description
ÍNDICE I. INTRODUCCIÓN
3
II. CONSIDERACIONES PARA LA METODOLOGÍA DE DESARROLLO
4
III. CONSIDERACIONES PARA SEGURIDAD EN EL DESARROLLO
6
1. HACER USO DE LIBRERÍAS Y FRAMEWORKS DE SEGURIDAD
6
2. CONSULTAS SEGURAS A LAS BASES DE DATOS
6
3. CODIFICAR Y ESCAPAR LOS DATOS
7
4. VALIDACIÓN DE DATOS
8
5. IMPLEMENTAR MECANISMOS DE AUTENTICACIÓN SEGUROS
9
5.1 NIVEL 1: CONTRASEÑAS 5.2 NIVEL 2: MULTIFACTOR 5.3 NIVEL 3: AUTENTICACIÓN CRIPTOGRÁFICA
9 11 11
6. IMPLEMENTAR MECANISMOS DE MANEJO DE SESIÓN
11
7. USO DE COOKIES PARA MANEJO DE SESIÓN
12
8. USO DE TOKENS DE SESIÓN
12
9. IDENTIFICACIÓN DE DATOS
13
10. DATOS EN TRÁNSITO
13
11. DATOS EN REPOSO 12. MANEJO DE SECRETOS
13 14
13. DESARROLLO ORIENTADO A PRUEBAS
14
14. CALIDAD DE CÓDIGO
15
15. DETECCIÓN PREVENTIVA
15
16. MODELO INICIAL DE DATOS
15
17. SEEDING DE LA BASE DE DATOS Y CREACIÓN DE DATOS INICIALES EN EL DESPLIEGUE 16 ___________
Guía Técnica | Lineamiento para el Desarrollo de Software
1
18. IMPLEMENTAR MECANISMOS DE REGISTRO
16
19. MANEJO SEGURO DE ERRORES Y EXCEPCIONES
16
IV. ASEGURAMIENTO Y CERTIFICACIÓN DE CALIDAD
18
V. TECNOLOGÍAS DE PREFERENCIA
19
1. PARA LENGUAJES DE PROGRAMACIÓN
19
2. PARA ALMACENAMIENTO DE DATOS RELACIONALES
20
3. PARA ALMACENAMIENTO DE DATOS NO RELACIONES
20
4. PARA TAREAS DE ENCOLAMIENTO
20
5. PARA TAREAS DE REGISTRO DE EVENTOS (LOGGING)
20
VI. USO DE LAS TECNOLOGÍAS
21
1. LENGUAJE
21
2. ALMACENAMIENTO
21
3. TAREAS FUERA DE LÍNEA O PROGRAMADAS
22
VII. USO OBLIGATORIO REPOSITORIO GIT git.gob.cl
23
VIII. DESARROLLO Y CONSUMO DE APIs
24
1. INTERACCIÓN CON SERVICIOS LEGADO
25
2. EXPOSICIÓN Y AUTENTICACIÓN DE SERVICIOS
25
3. DESARROLLAR ORIENTADO A INTEROPERABILIDAD
26
4. USO DEL IDIOMA EN EL CÓDIGO
28
IX. LICENCIAS
29
1. GPLv2 y GPLv
29
2. LGPLv3
29
3. DOMINIO PÚBLICO (Creative Commons 0 y equivalentes)
30
X. CASOS DE USO DE LICENCIA
31
XI. BUENAS PRÁCTICAS DE LICENCIAMIENTO
32
___________
Guía Técnica | Lineamiento para el Desarrollo de Software
2
I. INTRODUCCIÓN Estaa gu Est guía ía té técni cnica ca en entr treg egaa lo loss li line neam amie ient ntos os gen gener eral ales es y re reco come menda ndaci cione oness específ esp ecífica icass que debe debe seguir seguir todo todo equipo equipo que desa desarro rrolle lle soft softwar waree al int interi erior or de la Administraci Admini stración ón del Estado, contribuyendo contribuyendo a la constru construcción cción de sistem sistemas as de alta calidad en todas las instituciones. Para ello, es fundamental adoptar una metodología de desarrollo de software rápida, flexible e incremental, para minimizar el riesgo de desviaciones en el proceso de creación e implementación de éste, y permitir las adecuaciones temprran temp anas as,, ba basa sada dass en la re retr troa oali lime ment ntac aciión de lo loss us usua uarrio ioss o en las modificaciones de los requisitos durante el proyecto. Los aspectos que serán abordados en esta guía son: ●
Cal Calida idad d del sof softwa tware, re, tan tanto to en ser servici vicio o imp implem lement entado, ado, como en códi código go fuente resultante.
●
Ent Entreg regas as tem tempra pranas nas en base a pro product ductos os mínimos mínimos viables, viables, que permitan permitan comenzar a aprovechar las ventajas que ofrece la solución requerida a la
●
brevedad. Comun Comunicació icación n efectiva efectiva dentro del equipo de desarrollo desarrollo y también también con los stakeholders.
●
Uso de est estánda ándares res,, en el que todos los act actore oress e ins instit tituci uciones ones utilice utilicen n el mismo lenguaje.
___________
Guía Técnica | Lineamiento para el Desarrollo de Software
3
II. CONSIDERACIONES PARA LA METODOLOGÍA DE DESARROLLO El an anál ális isis is,, de desar sarro roll llo o e im impl plem ement entac ació ión n de deber beráá ser re real aliz izado ado en ba base se a meto me todol dologí ogías as ág ágil iles, es, in incor corpo pora rando ndo al me meno noss la lass re reco come menda ndaci cion ones es de la metodol met odologí ogíaa
denomin deno minada ada The
Twe welv lvee-Fa Faccto torr
App Ap p,
documentado
en
https://12factor.net/es/, con el objeto de satisfacer, al menos, los siguientes aspectos requeridos: ○
Us Usar ar fo forrma mato toss de decl clar arat atiivo voss par araa la au auto toma mati tiza zaci ción ón de la configuració config uración, n, así es posibl posiblee minimizar el tiempo y coste que supone que nuevos desarrolladores se unan al proyecto.
○
Tene Tenerr un cont contrat rato o cla claro ro con el sistema sistema operat operativo ivo sobre sobre el que se trabaja tra baja,, ofr ofreci eciendo endo la máx máxima ima por portab tabili ilidad dad entr entree los dif difere erentes ntes entornos de ejecución.
○
Dis Dispon poner er por def defecto ecto despliegue desplieguess en pla plataf taform ormas as mod modern ernas as en la nube, nu be, obv obvia iando ndo la ne neces cesida idad d de ser servi vidor dores es y ad admi mini nist stra raci ción ón de sistemas.
○
Mi Mini nimi miza zarr la lass di dife fere renc ncia iass en entr tree lo loss en ento torn rnos os de de desa sarr rrol ollo lo y producción, posibilitando un despliegue continuo para conseguir la máxima agilidad.
○
Po Poder der esc escal alar ar la ar arqu quit itec ectur turaa o la lass pr prác ácti ticas cas de des desar arro roll llo o si sin n cambios significativos para las herramientas.
___________
Guía Técnica | Lineamiento para el Desarrollo de Software
4
El equipo de desarr desarrollo ollo deberá detallar detallar en su propu propuesta esta el uso de metodologías metodologías ágiles, tales como Scrum o Kanban, Programación Extrema, Modelamiento Ágil, Feature Driven Development (FDD) o cualquier otra que considere relevante. Deber De beráá des descr crib ibir ir la lass me meto todol dolog ogía íass qu quee ut util iliz izar aráá y la fo form rmaa en que ser serán án ap apli lica cada dass en el ámbito del proyecto.
___________
Guía Técnica | Lineamiento para el Desarrollo de Software
5
III. CONSIDERACIONES PARA SEGURIDAD EN EL DESARROLLO 1. HACER USO DE LIBRERÍAS Y FRAMEWORKS DE SEGURIDAD Se de debe ben n se sele lecc ccio iona narr li libr brer ería íass y fr fram amew ewor orkk de au auto tore ress co conf nfia iabl bles es,, co con n mantención manten ción y desarr desarrollo ollo activo activo,, y que sean ampliamente ampliamente utilizadas utilizadas (y por ende, validadas). Las librerías y frameworks de terceros confiables que incorporan mecanismos de segu segurid ridad ad son fund fundame amenta ntales les par paraa evit evitar ar err errore oress de imp implem lement entaci ación ón en áre áreas as en las que el desarrollador no se encuentre tan familiarizado. Es im impo port rtan ante te in inven venta tari riar ar y cat catal alog ogar ar di dicha chass li libr brer ería íass y fr fram amew ewor orks ks pa para ra mantenerlas actualizadas y prevenir vulnerabilidades en ellas. Otra Ot ra al alte tern rnat ativ ivaa re recom comend endada ada es en enca caps psul ular ar la li libr brer ería ía y ex expo pone nerr sól sólo o la funcionalidad requerida en el sistema que se está desarrollando. Algunas librerías y frameworks recomendados se encuentran en la sección Tecnologías de Preferencia.
2. CONSULTAS SEGURAS A LAS BASES DE DATOS Las vulnerabilidades de tipo SQL injection ocurren cuando datos no confiables son incorpora incorporados dos de forma forma dinámic dinámicaa a una consult consultaa SQL (mucha (muchass veces a través de la concatenación directa de dos strings). Este tipo de ataque permite a un adversario extraer, modificar o eliminar datos desde la base de datos e incluso en ocasiones, tomar total control del sistema comprometido.
___________
Guía Técnica | Lineamiento para el Desarrollo de Software
6
Para mitigar mitigar o preven prevenir ir este tipo de ataques, se deben implementar implementar medidas de protección acordes a la tecnología tec nología y plataforma utilizada: 1. En el cas caso o de estar estar utilizan utilizando do un lenguaje lenguaje orient orientado ado a objetos, objetos, se debe de be ut util iliz izaar el map apeo eo a tr trav avés és de OR ORM, M, as aseg egur urar arse se qu quee la herram her ramien ienta ta uti utiliz lizada ada no ten tenga ga vul vulner nerabi abilid lidades ades de iny inyecci ección, ón, e implementar otros mecanismos de defensa como codificar y escapar los datos, como se explica en la próxima sección de esta guía. 2. En el caso de no poder utiliz utilizar ar ORM de forma justif justifica icada, da, se deben deben utilizar prepared statements para prevenir posibles inyecciones de código SQL. 3. En el cas caso o de cont contar ar con tecnolog tecnología ía de bas basee de dat datos os específi específica ca o legacy (Oracle legacy (Oracle,, SQL Ser Server, ver, etc), etc), en la cual se uti utilic licen en pro procedi cedimie miento ntoss almacenados directamente en el motor, éstos deben ser securizados de forma correcta, por ejemplo, utilizando bind variables.
3. CODIFICAR Y ESCAPAR LOS DATOS Éstas son técnicas técnicas defensivas defensivas cuyo objetivo objetivo es detener ataques ataques de inyecci inyección, ón, ya sean SQL, XSS u otros. Codificar consiste en transformar o traducir ciertos caracteres caract eres especia especiales les por otros carac caracteres teres equival equivalentes entes pero inofen inofensivos sivos para el intérprete. Por ejemplo, el carácter “
View more...
Comments