Eficiencia en Python al ordenar

Velocidad Un artículo muy chulo comparando los métodos de ordenación en Python, que se puede leer en list.sort() vs. sorted(list).

El primero es un método asociado a los objetos de tipo lista, y el segundo una función estándar para ordenar listas.

Vale la pena leerlo con calma para aprender un poco cómo hacer estas comparaciones, qué hay que tener en cuenta y todo eso. Pero para gente ansiosa, podemos decir que list.sort es algo más rápido y consume menos memoria. Tiene el inconveniente, eso sí, de que perdemos la lista original (porque reordena sobre la propia lista).

Una guía sobre cookies para la web

Fabricando galletas. En la vocación de divulgación y aprendizaje de este sitio traemos otro artículo de esos que sirven de recordatorio para la gente más experimentada, y de aprendizaje para la más nueva.
Se trata de Ultimate Guide to HTTP Cookies y es justamente eso, una guía sobre las denostadas (y necesarias) cookies en la navegación web.

Primero, recordar que las cookies se suelen utilizar principalmente para la gestión de sesiones (autenticación), seguimiento de usuarios y personalización.

There are three main reasons why we need cookies:

Authentication (session management)

User tracking

Personalization (theme, language selection, etc.)

Conviene recordar que la web funciona sobre el protocolo HTTP (Hypertext Transfer Protocol), que a su vez se ejecuta sobre el protocolo TCP (Transmission Control Protocol) y que se trata de un protocolo sin estado. Esto es, hacemos una petición, el servidor web la responde y ‘se olvida’ de nosotros. El concepto de programa (y, por lo tanto, el de aplicación web) va íntimamente ligado a la idea de estado (instrucciones que se ejecutan sobre una serie de datos que van cambiando en el tiempo sus valores) así que es necesario mantener esa información para que puedan existir las aplicaciones web.

Muy interesante, y aclararemos algunos conceptos (o los recordaremos) con la lectura.

Información sobre Cross Site Request Forgery en OWASP

Cruce Las ‘chuletas’ de OWASP (OWASP cheatsheets) son una buena fuente de información para refrescar nuestras ideas o para abordar algún tema que no conocemos en profundidad. En esta ocasión traemos la de Cross Site Request Forgery Prevention Cheat Sheet, que ha sido recientemente actualizada y revisada.

Primero recordar que el ‘Cross Site Request Forgery (CSRF)’ es un problema que se basa en la realización de alguna acción en un sitio web en el que estamos autenticados mediante un enlace en otra parte (un sitio web malicioso, mensaje, correo, …). Es posible cuando el sitio no valida correctamente que la petición ha sido realizada de la manera adecuada (esto es, que el enlace en el que pinchamos está en un sitio adecuado) y puede provocarnos algún dolor de cabeza:

Cross-Site Request Forgery (CSRF) is a type of attack that occurs when a malicious web site, email, blog, instant message, or program causes a user’s web browser to perform an unwanted action on a trusted site when the user is authenticated.

La forma de defenderse es conocida desde hace tiempo, y la mayoría de entornos de desarrollo proporcionan herramientas para que no tengamos que preocuparnos (demasiado) de estos problemas pero hay que recordarlo si decidimos trabajar ‘sin red’ y desarrollar nosotros mismos alguna aplicación web sin apoyo de un ‘framework’ adecuado.

Interesante.

Se pueden ver otras ‘chuletas’ en CheatSheets.

Introducción e historia de los contenedores

Contenedor y herramientas Aunque de manera profesional son algo de nuestro día a día, en el apartado de ‘cosas que han sucedido mientras no estábamos atentos’ han explotado en los últimos años los contenedores: por decirlo de manera muy simplificada, un contenedor es un sistema virtual que nos permite aislar un ‘programa’ y sus dependencias de forma que no interfiere con otros procesos dentro del mismo sistema donde se ejecuta, pero de manera más ligera que si ejecutáramos una máquina virtual para él solo.

En The Missing Introduction To Containerization hablan del tema, empezando con un repaso histórico: las jaulas ‘chroot’, y otras tecnologías que se han venido usando con la misma finalidad.

It all started when the Chroot Jail and the Chroot system call were introduced during the development of Version 7 Unix in 1979. Chroot jail is for “Change Root” and it’s considered as one of the first containerization technologies.

Lectura interesante.

¿Dónde guardas tus secretos?

Escondido El otro día hablábamos de fugas de información a través de los canales de comunicación de las empresas y cómo los ‘malos’ podían sacar partido de diversos automatismos en Interacciones inseguras entre sistemas de ayuda y otros. Hoy traemos otro How bad can it git? Characterizing secret leakage in public GitHub repositories relacionado con la difusión de secretos que no deberían estar en los sistemas de control de versiones.

Los desarrolladores no deberían incluir secretos en los sistemas de control de versiones, nada nuevo:

On the one hand you might say there’s no new news here. We know that developers shouldn’t commit secrets, and we know that secrets leaked to GitHub can be discovered and exploited very quickly.

Ofrecen expresiones regulares que podrían utilizarse como chequeo antes de enviar la información al sistema de control de versiones, que pueden encontrarse en el artículo, en How Bad Can It Git? Characterizing Secret Leakage in Public GitHub Repositories.

Hay una implementación previa, que incorpora el sistema en truffleHog y otro proyecto con ideas similares git-secrets.

Vale la pena leerlo todo, muy interesante.