JavaRush /Blog Java /Random-ES /Pausa para el café #35. Cómo cumplir con las reglas de se...

Pausa para el café #35. Cómo cumplir con las reglas de seguridad de GitHub. Consejos útiles para depurar rápidamente código Java

Publicado en el grupo Random-ES

Cómo mantenerse seguro en GitHub

Fuente: DZone GitHub se considera merecidamente la plataforma de desarrollo de equipos más popular. Según datos del otoño pasado, más de 40 millones de programadores utilizaron este servicio. Y dado que la mayoría de ellos utilizan código abierto para crear software, la seguridad al trabajar en Github debería ser su máxima prioridad. La reutilización de código aumenta el riesgo de difundir vulnerabilidades. Esto significa que cada usuario de GitHub debe prestar la máxima atención a la creación de un entorno de desarrollo seguro. Pausa para el café #35.  Cómo cumplir con las reglas de seguridad de GitHub.  Consejos útiles para depurar rápidamente código Java - 1Hay 8 reglas que debes seguir para mantener seguro tu código GitHub.

Proporcionar control de acceso

El control de acceso es una de las mejores formas de mejorar la seguridad no sólo en GitHub, sino en cualquier otro entorno donde se requiera protección de código. GitHub ofrece varias formas de reducir los riesgos en su trabajo. En primer lugar, adopte la costumbre de otorgar privilegios mínimos: otorgue a los usuarios del repositorio sólo los permisos que necesitan para realizar su trabajo. Existen otros métodos de control de acceso que debes seguir:
  • limitar la creación de repositorios para evitar que los usuarios revelen información sobre la organización en repositorios públicos;
  • habilite la protección de sucursales y verificaciones de estado para que los usuarios puedan fusionar confirmaciones o administrar sucursales de forma segura;
  • Permitir o deshabilitar la bifurcación de repositorios privados para garantizar que los usuarios no revelen ni compartan su código con otros;
  • revocar el acceso a todos los usuarios inactivos que ya no sean miembros de su comunidad o empleados de la empresa;
  • Verifique periódicamente los derechos de acceso a sus proyectos en GitHub;
  • Asegúrese de que los usuarios no compartan el acceso a la cuenta de GitHub ni las contraseñas con otros;
  • asegúrese de que cada usuario del repositorio utilice autenticación de dos factores en su cuenta;
  • Cambie periódicamente los tokens de acceso personal y las claves SSH.

Nunca almacene datos de acceso en sus archivos de GitHub

La filtración de información de acceso a su repositorio de GitHub a través de código, archivos de configuración o mensajes de confirmación se puede utilizar para ataques. Para evitar que se agreguen datos confidenciales a su repositorio, utilice herramientas de control de acceso como git-secrets o vault . Estas herramientas escanean su código base y cambian el acceso cada vez que se encuentra información confidencial en su código o archivos de configuración. Si encuentra información confidencial en su repositorio de GitHub, debe eliminarla inmediatamente. Pero debido a que GitHub mantiene un historial de todas las confirmaciones en su repositorio, eliminar datos por sí solo no es suficiente. Deberá eliminar archivos del historial de su repositorio de GitHub. Un paso importante para mejorar la seguridad será la sustitución de todas las contraseñas y tokens que anteriormente estaban disponibles públicamente.

Habilitar alertas para dependencias vulnerables

A medida que los usuarios de GitHub trabajan en más proyectos, se vuelve cada vez más difícil controlar el creciente número de objetos dependientes. Afortunadamente, GitHub proporciona alertas automáticas para dependencias vulnerables que se encuentran en el repositorio. Estas alertas se basan en la Base de datos nacional de vulnerabilidades (NVD), los Avisos de seguridad de GitHub y la base de datos de vulnerabilidades WhiteSource, que admite más de 200 lenguajes de programación. Las alertas de GitHub hacen que sea más fácil y seguro utilizar bibliotecas de código abierto.

Verifique las aplicaciones agregadas desde GitHub

GitHub Marketplace contiene cientos de aplicaciones escritas por empresas y desarrolladores externos. Por lo tanto, es importante revisar cuidadosamente cada aplicación que agregue a su repositorio. Al instalar aplicaciones desde GitHub Marketplace, siga estas pautas:
  • Hacer cumplir el principio de privilegio mínimo. Nunca otorgue a las aplicaciones más derechos de acceso de los que requieren;
  • Cuestione siempre los derechos de acceso o permisos solicitados por una aplicación. Piense en el daño que esto podría causar con este nivel de acceso;
  • Verifique que la empresa o el desarrollador de la aplicación realmente exista antes de otorgarle acceso a su repositorio de GitHub;
  • Verifique la funcionalidad y seguridad de la aplicación. Si contiene vulnerabilidades, puede convertirse en víctima de piratería;
La seguridad de una aplicación se juzga por su parte más débil. Esto también se aplica a los repositorios de GitHub. Entonces, antes de darle acceso a una aplicación a su almacenamiento, asegúrese de confiar en ella y de que coincida con el nivel de acceso que solicita.

Verifique todo el código importado desde GitHub

Los desarrolladores suelen utilizar el código de otras personas. Cada vez que copie parte del código de otra persona en su proyecto, realice una revisión completa del mismo. Esto puede parecer una pérdida de tiempo, especialmente para proyectos pequeños, pero existe la posibilidad de que al descuidar esta regla introduzca una vulnerabilidad en su repositorio. Otro riesgo asociado con el código importado es que puede contener información confidencial, como datos de acceso. Si se almacenan en archivos de GitHub, esto crea otro riesgo de seguridad. Auditar el código antes de copiarlo ayuda a identificar dichas lagunas. No asuma que el código de otra persona es seguro porque estaba en un repositorio privado. Es muy posible que dañe su código base.

Utilice el análisis automático de código fuente estático para sus repositorios

Existen varias herramientas de terceros que puede utilizar para analizar su repositorio en busca de vulnerabilidades. Uno de ellos es WhiteSource Bolt , una herramienta gratuita del GitHub Marketplace. WhiteSource Bolt escanea sus repositorios en busca de vulnerabilidades en todo el código expuesto. También proporciona información detallada sobre vulnerabilidades y sugiere opciones de solución.

Utilice el plan GitHub que se adapte a sus necesidades

Muchas empresas tienen políticas que impiden a los desarrolladores publicar código en plataformas como GitHub. Estas restricciones son especialmente comunes en departamentos gubernamentales e instituciones financieras. Si trabaja en un entorno altamente regulado, utilice GitHub Enterprise , un plan empresarial que le permite alojar repositorios en un servidor local. Esto proporciona un mayor nivel de seguridad porque permite a los desarrolladores de la empresa tener acceso a todos los proyectos sin preocuparse por usuarios no autorizados de GitHub.

Sigue una política de seguridad integral en tus proyectos

La seguridad es una responsabilidad colectiva. Si trabaja en equipo, es importante establecer reglas de seguridad que todas las partes interesadas deben seguir. Lo ideal sería reunir a los equipos de desarrollo y ciberseguridad durante la fase de planificación para asegurarse de que estén trabajando en sincronía. Esto hará que sea más fácil garantizar la protección durante el proceso de desarrollo. Si uno de los miembros de su equipo no se preocupa por almacenar contraseñas u otra información confidencial, podría poner en riesgo todo el repositorio. Para evitarlo, documenta claramente el procedimiento de seguridad que deben seguir todos tus compañeros.

Conclusión

Proteger su código en GitHub es fácil. Sólo necesita garantizar un control de acceso adecuado, aprovechando las funciones de seguridad integradas de GitHub. Si está interesado en la máxima protección, integre herramientas adicionales que aumentarán la seguridad del código en todas las etapas de desarrollo. También recomendamos revisar las secciones de la documentación GitHub Security for Business y Free Users . De esta manera puede obtener información adicional sobre la seguridad y protección del código.

Consejos útiles para depurar rápidamente código Java

Fuente: Hackernoon Además de escribir código eficiente, mejorar la depuración es una de las cosas más útiles que puede hacer para facilitarle la vida como desarrollador de Java. Esto es especialmente importante en las condiciones modernas de desarrollo de software, donde el mundo del software avanza activamente hacia arquitecturas distribuidas y código asincrónico. Pausa para el café #35.  Cómo cumplir con las reglas de seguridad de GitHub.  Consejos útiles para depurar rápidamente código Java - 2Si bien los errores de software son inevitables, cada vez son más difíciles de detectar y corregir en compilaciones complejas. Y cuando se pasa a la etapa de lanzamiento del producto, el proceso de depuración se convierte en un problema aún más grave. Desafortunadamente, no hay forma de evitar esto: es necesaria la depuración. Para ayudarte, decidí compartir algunos consejos útiles para depurar aplicaciones Java en diferentes etapas de desarrollo.

Usar puntos de control

Comencemos con los puntos de interrupción, un punto obvio pero muy importante que subyace a cualquier proceso de depuración. Los puntos de control le permiten detener la ejecución de una aplicación para que pueda analizar el estado del programa y descubrir por qué el código no funciona correctamente. Cada depurador ofrece varias opciones de puntos de interrupción, incluidos puntos de interrupción condicionales, puntos de interrupción de excepción, puntos de vigilancia y puntos de seguimiento. Aprender cómo y cuándo utilizar diferentes tipos de puntos de interrupción puede facilitar el proceso de depuración. Vale la pena mencionar que algunas herramientas modernas admiten puntos de control sin interrumpir la aplicación. Esto hace posible establecer puntos en su código y recopilar datos de depuración sin detener la ejecución del programa.

Mostrar estructura lógica

La función mostrar estructura lógica es muy útil al monitorear contenido en clases Java. Si esta característica está habilitada, la lista de variables muestra una matriz, lo cual es mucho más útil en un contexto de depuración. Esto es muy conveniente, especialmente si su código carece de métodos toString() para objetos. Las vistas de variables también le permiten cambiar directamente los valores de sus variables durante la depuración. Esto puede ahorrar una cantidad significativa de tiempo al no tener que reiniciar la sesión de depuración con datos de entrada modificados.

Aprenda a navegar por el código base

Cualquier depurador de Java puede utilizar varias funciones que le permiten navegar a través de diferentes secciones de código durante la depuración. Algunos de ellos incluyen "correr hasta la línea", "pasar por encima", "entrar" y "entrar". Además de estas, considere dos opciones más:
  1. Soltar al marco: esta función se utiliza para regresar a un punto en el marco de la pila. Si se perdió un punto y necesita regresar, simplemente use la función Soltar al marco.
  2. Filtrado de pasos: le permite omitir ciertos paquetes durante la depuración. No es necesario navegar por todas las clases del sistema JDK cuando simplemente puede filtrar los tipos que no necesita.
Para mejorar la velocidad de navegación de su código, debe dominar las combinaciones de teclas de función:
  • F5 - para "entrar".
  • F6 - para "pasar por encima".
  • F7 - para "retorno de paso".
  • F8: para correr hasta el siguiente punto de control.
Aunque las teclas de acceso rápido pueden variar entre IDE, si las recuerdas, te evitarás tener que usar el mouse con más frecuencia.

Aprenda a evitar puntos muertos

Un escenario de punto muerto ocurre cuando dos o más subprocesos se bloquean después de formar una dependencia circular. Dado que un conjunto de subprocesos de Java suele estar esperando otro recurso, esto puede provocar que la aplicación se detenga por completo. Depurar interbloqueos de jstack puede ser bastante difícil ya que no muestran indicadores de problemas como picos de memoria, carga de CPU, etc. Existen varios enfoques para solucionar una situación de bloqueo de jstack. En primer lugar, puede capturar varios volcados de subprocesos en su clúster JVM para inferir patrones de subprocesos. En este caso, analizar un volcado de subprocesos estáticos puede no ser suficiente. Dependiendo del tamaño del clúster JVM, puede ser necesario rastrear varios archivos, lo que suele ser un proceso que requiere mucho tiempo y mano de obra. Es mejor utilizar una solución de monitoreo de aplicaciones que proporcione la capa JV y la capa de código necesarias para aislar los interbloqueos de subprocesos. Afortunadamente, existen herramientas innovadoras que pueden ayudar con esta situación, incluidos algunos depuradores modernos y herramientas APM comerciales. Estas herramientas aumentan la transparencia de su código Java al tiempo que identifican errores.

Aproveche el poder de los depuradores de producción

El proceso de depuración típico que siguen la mayoría de los desarrolladores implica replicar el entorno, aislar el error y luego corregirlo. Sin embargo, esto no se aplica en todos los casos. Si esta es la situación, el desarrollador debería utilizar potentes depuradores de producción. Rookout es una de esas herramientas. Le permite recopilar datos de depuración de aplicaciones sin cambiar su estado o control de flujo. Con Rookout, puede establecer puntos de interrupción continuos para obtener un seguimiento de la pila completa, capturar variables en vivo o cualquier otro dato de la aplicación necesario para la depuración. Por lo tanto, en lugar de utilizar soluciones de monitoreo de altos costos para la depuración de producción, simplemente use Rookout, que proporciona todo lo que necesita para depurar aplicaciones sin volver a implementarlas ni escribir código nuevo. Ya sea que esté trabajando en aplicaciones del lado del servidor o en contenedores, Rookout es una gran adición a su arsenal de depuración.

No te olvides de la depuración remota

La gran mayoría de IDE, como NetBeans, Eclipse, IntelliJ IDEA y Visual Studio, admiten la depuración remota, una técnica que le permite reparar el código Java ubicado en otra computadora. Esto es especialmente importante en situaciones en las que su sistema no admite la depuración local o cuando su computadora no tiene suficientes recursos para ejecutar depuradores. Para realizar la depuración remota, debe proporcionar información de configuración que el depurador utilizará para conectarse al puerto remoto. La depuración remota también es útil en situaciones de resolución de problemas en las que los desarrolladores externos necesitan conectarse a la aplicación para corregir un error. Recuerde que a veces la depuración puede llevar más tiempo que la implementación real. A medida que perfeccione sus habilidades de depuración de Java, esfuércese siempre por escribir código limpio y eficiente; vale la pena cuando se trata de corregir errores. Si sientes que las cosas se te están saliendo de control, siempre es una buena idea tomarte un descanso. Un error es un rompecabezas de programación y muchos programadores han logrado resolver este problema sin estar cerca de su computadora. Utilice las estrategias descritas anteriormente para deshacerse de los problemas de depuración de Java. ¡Feliz codificación!
Comentarios
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION