Guía Desarrollo de Software - Consulta Pública - NO EDITAR

August 1, 2022 | Author: Anonymous | Category: N/A
Share Embed Donate


Short Description

Download Guía Desarrollo de Software - Consulta Pública - NO EDITAR...

Description

 

 

 

 

ÍNDICE I. INTRODUCCIÓN



II. CONSIDERACIONES PARA LA METODOLOGÍA DE DESARROLLO



III. CONSIDERACIONES PARA SEGURIDAD EN EL DESARROLLO



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 



 

  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 



 

 

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 



 

 

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 



 

  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 



 

 

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 



 

  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

Copyright ©2017 KUPDF Inc.
SUPPORT KUPDF