¿Que herramientas de CD/CI elegir? ¿Cómo armar un Stack tecnológico?

Vi un post en un grupo de programadores y vi algunas preguntas interesantes del desarrollo que intente responder desde mi punto de vista y experiencia.


¿Cuanto tardan desde que tienen un release desarrollado hasta llegar a producción?.
Un día, generalmente cuando se hace el review en un Spint se dejan los release listos.
Los pasos a producción se planifican, duran poco tiempo dependiendo de los sistemas involucrados.
¿Ocupan alguna herramienta de CD/CI?
Bamboo, Jenkins
¿Interactuan con otras áreas a través de tickets?.
Tickets en Jira SelfService (generalmente toda la suite de atlassian)
¿Pruebas unitarias, de integración, manuales, de seguridad?.
Pruebas unitarias se hace automáticas al codigo, hay reglas de cobertura de código, generalmente SonarQube o PMD.
La documentacion se adjunta en el proyecto Jira cuando se hace la toma de control por el área de soporte.
Seguridad se hace automática con Veracode existe un stage dentro del CD/CI que si no se cumple no permite el deploy.
Existe reglas de firewall en el caso de exponer urls publicas que las lleva el area de seguridad si es Cloud se usa Cloud Armor o su simil en AWS, Azure etc..
Si el proyecto esta en cloud también se agrega seguridad por AWT o apikey a las APIS para mayor seguridad también se protege el acceso por URL
¿Cuantas iteraciones promedio en certificación?,
¿?
¿Kpis?.
No es mi área de expertice, pero se que se usan herramientas de monitoreo y Dashboard como Google Analytics, si estás interesado en un area especifica al final dare una url para ver ejemplos.
Yo creo que los kpis deben dividirse por área de interes, segun el negocio puede cambiar el área de interes.
KPI de ventas
KPI de retail
KPI de producción
KPI marketing digital
KPI redes sociales
¿Que tipo de exigencias respecto a documentación deben cumplir?,
Generalmente ya hay un formato predefinido y el estandar de exigencia se lo da la misma empresa y hay que adaptarse a ello.
¿y la gestión de la configuración, alguien la audita?,
No es mi área de expertice, pero hay empresas que tienen sistemas que deben cumplir estándar pci-dss y el software debe ser auditado.
Logs código, etc, generalmente lo hace una entidad externa. La decision de permanecia de consultoras en empresas grandes depende de este paso.
Hay herramientas como Kibana, Dynatrace, Kiuwan
¿tienen detallados estos procesos?.
No es mi área de expertice
¿Que hacen los desarrolladores mientras se ejecutan los procesos de despliegue?
El desarrollo nunca se detiene, solo sigue el siguiente sprint o kanbam.
Si quieres ver el Stack tecnológico de varias empresas visita:
Espero que les ayude.

Fix code SpringBoot SSRF - Exploiting URL Parser

Este tipo de vulnerabilidades se da cuando un atacante tiene la habilidad de hacer que el servidor objetivo inicie una nueva conexión contra otro equipo, independientemente de si al equipo remoto al que se conecta se encuentra dentro o fuera de su red interna.
En la mayoría de los casos en donde un ataque de “SSRF” adquiere un mayor nivel de criticidad es en los entornos en los que a través de ésta técnica es posible conectarse a equipos en la red local y que de otro modo sería imposible acceder a ellos desde una red externa.

Este ataque no solo aplica a conexiones HTTP, sino que puede ser combinado con otro tipo de ataques como “XML External Entities”, o incluso extrapolado a otro tipo de protocolos como conexiones de SQL Server en las que mediante la modificación de la cadena de conexión es posible acceder a servidores SQL localizados en la red local. En 2010 ya se habló por primera vez de este último ataque (“CSPP – Connection String Parameter Pollution“) junto con la combinación con un “SSRF”.
En cuanto a la detección de este tipo de vulnerabilidades, no resulta trivial debido a que podemos encontrar este error en diversos entornos y/o protocolos, e incluso algunos de ellos no muestran una alteración en la respuesta a la solicitud, por lo que la única forma de “cazarlos” es en base a un sistema que detecte la conexión saliente.
Ejemplo:
                    



  • Urls parser por lenguaje de programación:








private static void getEmployees(String uri)
{
     
    RestTemplate restTemplate = new RestTemplate();
    String result = restTemplate.getForObject(cleanUrl(url), String.class);
    
    System.out.println(result);
}


    /**
   * cleanUrl 
   * @param url
   * @return
   * @throws EncodingException
   */
  public static String cleanUrl(String url) throws EncodingException {
    return ESAPI.encoder().decodeFromURL(ESAPI.encoder().encodeForURL(url));

  }
}
más info: [CB17] A New Era of SSRF - Exploiting URL Parser in Trending Programming Languages!

Ejemplo sencillo de Api Rest en GCP

Una API Restful de Farmacias en Turno Público El proyecto se separa en capas BE microservicios de lógica y consulta a otras APIS en el caso propuesto las APIS no eran con seguridad si se necesitara el uso del x-api-key se deberia utilizar secretos para guardar las claves. El microservicio BFF interactua directamente con el Front FE, por lo que se configuraron los filtros CORS. El front FE no está completo,nunca tuve una API de google maps para habilitar, no me desgaste en eso. Mi primer enfoque pensé en usar la cuenta que tenia en Kubernates pero se me vencieron los $300 dolares y para habilitar otra cuenta de facturación esta lenta la cosa con el tema del covid-19 al momento de escribir este manual aún no me habilitan. Los Servicios REST (API),están basados en Spring Boot Git Hub

Instalar y Configurar DLNA en linux

DLNA (Digital Living Network Alliance) es una tecnología presente en muchos equipos electrónicos como televisores, smartphones, consolas, discos duros, tablets, ect a través de la cual todos ellos se pueden intercomunicar con el fin de compartir contenido entre ellos mismos. DLNA “Digital Living Network Alliance” es un estándar para la transmisión de música, películas, imágenes y demás contenido a través de una misma red.

 ¿QUÉ NECESITO PARA ELLO?

Dispositivos compatibles con DLNA, tales como televisores SmartTV, teléfonos móviles, consolas de videojuegos, discos duros de red o reproductores Blu-ray. Una red doméstica en la que los dispositivos DLNA estén debidamente registrados. En tu PC o smartphone debes tener programas compatibles con DLNA como, por ejemplo, Windows Media Player o apps como Arkuda DMS (iOS) o BubbleUPnP (Android).

TIPOS DE DISPOSITIVOS DLNA
Los dispositivos DLNA se dividen en tres grupos. Además, un mismo dispositivo puede cumplir varias funciones. Por ejemplo, los teléfonos inteligentes pueden desempeñar la función de servidor, reproductor y controlador.

Servidores: En los servidores de medios digitales se almacenan archivos como música, fotos y vídeos. Por lo general se trata de PC, smartphones, tablets o discos duros de red (NAS).
Reproductor/Renderizador: dispositivos como televisores o reproductores Blu-ray son los responsables de la reproducción. Localizan el servidor automáticamente y muestran su contenido.
Controlador: smartphones y tablets también se usan como mando a distancia. Localizan archivos multimedia en los servidores y distribuyen el contenido a los dispositivos que los reproducirán.
ESTO ES LO QUE DLNA PUEDE HACER
Mediante el estándar DLNA, los diferentes tipos de dispositivos pueden intercambiar datos entre sí. Aquí tienes algunos ejemplos de su utilidad:

Películas, desde el disco duro de red a tu televisor: Si cuentas con una colección de películas en un disco duro de red (NAS) compatible con DLNA, puedes utilizar una sencilla app desde tu smartphone que te permitirá seleccionar tu NAS como servidor y tu televisor como dispositivo de reproducción. Además, puedes usar tu smartphone como si fuera el mando a distancia.

Si la opción es ver contenido 4k en la red hogar llegara la dificultad del almacenamiento, existen discos duros externos (USB 3.0), por ningún motivo usb inferiores  que se pueden usar para conectar a las TV, pero resulta inconveniente estar transportándolos de un lugar a otros (solución mas barata ).
Otra dificultad que encontraran sera la velocidad de la red domestica, si no están dispuestos a cablear toda la casa para conectar todos los dispositivos de la red domestica a cable, sugiero cambiar la WiFi 2.4G y la 5G, esta frecuencia tiene mas ventajas: si queremos altas velocidades (por ejemplo, para hacer streaming) y una conexión sin interferencias, debemos conectarnos a la red de 5 Ghz ya que alcanza velocidades cercanas a los 867 Mbps. Recomiendo conectar las TV y PlayStation 4 Pro a la red 5G y los celulares a la red wifi 2.4.

La otra alternativa mas cara sera usar discos NAS en red que para uso domestico no se condice la relación precio /uso.
ej de precios: discos NAS

Solución mas típica es comprar un reproductor de Blu-ray  y dejar estacionario el reproductor a la TV donde queremos ver el contenido eh ir comprando películas en físico (solución mas cara).

Pero también se puede instalar un servidor de DNLA domestico en la misma red domestica, y conectar a un Notebook o PC los discos duros o externos y reproducir su contenido en toda la red domestica (solución mas barata). Dare las configuraciones para hacerlo en Linux, pero en windows las dejare en el siguiente Link:
Servidor DNLA en Windows 10

Primero:

sudo apt install minidlna


sudo nano /etc/minidlna.conf


A grandes rasgos, para tener nuestro servidor DLNA funcionando, tan solo debemos cambiar 4 líneas. La primera de ellas será el nombre del servidor en cuestión:
friendly_name=LINUS_MEDIA

Las otras líneas que debemos modificar de este servidor son las que le indican los directorios donde almacenamos el contenido que queremos transmitir a través de la red con este servidor. Según la letra que elijamos (A,V,P) podemos configurar rutas diferentes para la música, los vídeos y las fotografías.

Por ejemplo:

media_dir=A,/home/usuario/Música
media_dir=V,/home/usuario/Vídeos
media_dir=P,/home/usuario/Fotos
Obviamente debemos cambiar en cada caso los directorios de ejemplo por donde tengamos nuestro contenido. Si no espeficicamos la letra correspondiente, compartiremos todo el contenido (A,V,P) del directorio especificado. (Evitar espacios entre los nombres de directorios) Las particiones montadas deben ser de umask=007 a umask=002.

Si tenemos, por ejemplo, los vídeos en varias carpetas diferentes, podemos añadir varias líneas para “V” con directorios diferentes sin problemas.
Una vez llegados a este punto, lo único que debemos hacer es iniciar el servidor DLNA para que este empiece a funcionar y sea visible dentro de la red local. Para ello, teclearemos el comando:

sudo service minidlna restart


sudo apt install minidlna
Para consultar el servicio se desplega en :


http://localhost:8200/







implementar Subresource Integrity


SRI es una nueva especificación W3C que permite a los desarrolladores web garantizar que los recursos alojados en servidores de terceros no hayan sido manipulados. El uso de SRI se recomienda como una mejor práctica, siempre que las bibliotecas se carguen desde una fuente externa.


 cat jquery.blockUI.js | openssl dgst -sha256 -binary | openssl enc -base64 

La clave generada será similar a esta:
XPlTBHSW0me1hiIzr+Pk1mF7fNOh9uF2k16F06+BnL4= Este proceso se repite para todos los recursos tanto css y js del sitio. Ahora para implementar en la página esta notación no es compatible con todos los navegadores:

https://caniuse.com/#feat=subresource-integrity



Si el sitio web dispone de Analytics sería bueno revisar el porcentaje de navegadores que revisan e sitio web y según el % de visitas realizar una validación de User Agent por ejemplo para habilitar esta notación por ejemplo a priori se sabe que las versiones de Internet Explorer no están soportadas para esta notación. Por lo que se debe hacer una bifurcación dependiendo del navegador en donde sea abierta la página:

En JSP sería asi:


 

        
            
                
                
                
            
            
                
                
            
        

Performance Web


  1. Buscar y mejorar redundancias en el CSS
-->Segmentar el css en secciones o niveles de visualización en el sitio. 
  • No sobrecargar en la etiqueta headers con Scripts.
  • -->Usar etiqueta Preconnect en links.
  • -->La etiqueta Preload se puede usar para pecargar los css.

    1.  Buscar y mejorar redundancias en el CSS
      csscss analizará todos los archivos CSS que le proporcione y le informará qué conjuntos de reglas tienen declaraciones duplicadas.Una de las mejores estrategias para mantener CSS es reducir la duplicación tanto como sea posible. No es una bala de plata, pero seguro que ayuda.
      Para hacer eso, necesitas tener todos los conjuntos de reglas en tu cabeza en todo momento. Eso es difícil, csscss es fácil. Deja que te diga lo que es redundante.

      http://zmoazeni.github.io/csscss/
    2. Segmentar el css en secciones o niveles de visualización en el sitio
      Según el reporte de Analitics de Flujo del comportamiento de usuarios es de hasta 3 iteraciones no tiene sentido cargar el css completo de otras 4 paginas que ni si quiera vera el usuario es mejor segmentar el css por navegación.


    3. No sobrecargar en la etiqueta headers con Scripts

    -->Los navegadores leen documentos HTML de arriba a abajo. Cuando hay enlaces a recursos externos
    (como scripts, en este caso), el navegador se detiene para analizarlos.
    Cuando se produce el análisis, la representación se bloquea.


  • Usar etiqueta Preconnect en links

  • -->El preconnect tipo de relación de enlace se usa para indicar un origen que se utilizará para captar los recursos requeridos. Iniciar una conexión temprana, que incluye la búsqueda de DNS, el protocolo de enlace TCP y la negociación de TLS opcional, permite al agente de usuario enmascarar los altos costos de latencia de establecer una conexión.


    https://w3c.github.io/resource-hints/
    Usar la preconexión de una manera eficiente y pensada no solo ayudará a optimizar su sitio web, sino que también evitará que utilice recursos deficiente. Preconnect es  compatible con algunos navegadores modernos, con la excepción de Internet Explorer, Safari, IOS Safari y Opera Mini.


  • La etiqueta Preload se puede usar para pecargar los css.

    La precarga es un nuevo estándar web que ofrece más control sobre cómo se obtienen los recursos particulares para la navegación actual. Esta es la versión actualizada de la captación previa de subrecursos que quedó obsoleta en enero de 2016. Esta directiva se puede definir dentro de un elemento, por ejemplo, como En general, es mejor precargar sus recursos más importantes, como imágenes, CSS, JavaScript y archivos de fuentes. Esto no debe confundirse con la precarga del navegador en la que solo los recursos declarados en HTML están precargados. La directiva de precarga realmente supera esta limitación y permite que los recursos que se inician a través de CSS y JavaScript se precarguen y definir cuándo se debe aplicar cada recurso .

    La precarga es diferente de la captación previa porque se enfoca en la navegación actual y obtiene recursos con alta prioridad . La captura previa se centra en la búsqueda de recursos para la próxima navegación que son de baja prioridad. También es importante tener en cuenta que la precarga no bloquea el onloadevento de la ventana .
    Beneficios de la precarga 
    Algunos de los beneficios de la directiva de precarga incluyen:
    Permite al navegador establecer la prioridad de los recursos, lo que permite a los desarrolladores web optimizar la entrega de ciertos recursos.Le da al navegador la capacidad de determinar el tipo de recurso, por lo tanto, puede decir si el mismo recurso se puede reutilizar en el futuro.
    El navegador puede determinar si la solicitud cumple con la política de seguridad de contenido  haciendo referencia a lo que se define en el asatributo.
    El navegador puede enviar los acceptencabezados apropiados según el tipo de recurso. (como image / webp)
  • Precargar el soporte del navegadorEl soporte de precarga se agregó a Chrome 50  en abril de 2016 y también es  compatible con Opera 37 y versiones posteriores. Todavía no está confirmado para Mozilla Firefox  y es probable el desarrollo de Microsoft Edge 

    1. precargar el soporte del navegador

    Problemas de activación WIFI6 en LG_OLED55CXPSA

      Mi experiencia con este TV  ah sido impecable hasta ahora, llevaba un uso normal y no tenia que usar la conexión por wifi ya que tengo una...