La abstracción detrás de un programa sencillo

Solemos olvidar (y muchos ni se imaginan) la complejidad que hay detrás de la ejecución de una simple línea de código. En [PDF] A study of code abstraction hacen un recorrido desde una sencilla línea de código en Perl hasta la invocación de los módulos del kernel implicados en la ejecución del trabajo.

Un poco denso en algunos momentos pero vale la pena echarle un vistazo.

Evitar los 10 fallos de diseño más graves para la seguridad

La IEEE lleva unos años fomentando la idea del desarrollo seguro. Una forma ha sido mediante la serie Building Security In (IEEE Security & Privacy, Series Editor: Gary McGraw), bastante relacionada con el podcast de Gary McGraw Silver Bullet.

Más recientemente han lanzado The IEEE Computer Society Center for Secure Design y una de sus primeras publicaciones ha sido Avoiding the Top 10 Security Flaws. Gary McGraw diferencia siempre que puede entre bugs (fallos de seguridad en el código, fundamentalmente) y fallos de diseño (flaws).

En esa línea viene la lista, que ha desarrollado junto con otros autores:

  • Gánala o concédela, pero nunca supongas la confianza.
  • Utiliza mencanismos de autentificación que no puedan ser modificados ni evitados.
  • Autorizar después de autentificar.
  • Separar de manera estricta los datos del control. Nunca procesar instrucciones de control recibidas de fuentes no confiables.
  • Definir una aproximación que asegure que todos los datos se validarán de manera explícita
  • Utilizar correctamente la criptografía.
  • Identificar los datos sensibles y cómo deberían manejarse.
  • Siempre tener en cuenta a los usuarios.
  • Comprender la forma en que cambia nuestra superficie de ataque la integración de componentes externas.
  • Ser flexible cuando se consideren los cambios futuros de objetos y actores.

Algunas frases que señalé:

various binary protection mechanisms can delay the leaking of sensitive material.

Sobre autorización:

Authorization should be conducted as an explicit check, and as necessary even after an initial authentication has been completed. Authorization depends not only on the privileges associated with an authenticated user, but also on the context of the request.

Validación de datos:

Liberal use of precondition checks in the entry points of software modules and components is highly recommended.

Seguro que ustedes encuentran las suyas.

Algunos enlaces que me han resultado útiles para comenzar este sitio

Tengo una mala costumbre cuando estoy instalando/actualizando/configurando cosas: empiezo a abrir pestañas en el navegador que se van acumulando sin mucho orden y que luego nunca termino de eliminar. Ahora que esta bitácora está medio funcionando, voy a poner aquí esos enlaces con dos objetivos: cerrar esas pestañas, y tener recopilada la información para el futuro, o por si le sirve a alguien más.

La primera inspiración vino de Bruce Eckel, en este post: New Programming Blog Site y luego su introducción Using Github Pages for Blogging de donde aprendí las primeras ideas.

La página de GitHub Pages y la explicación sobre cómo albergar un blog en Using Jekyll with Pages.

El artículo de Barry Clark que describe Build A Blog With Jekyll And GitHub Pages y que da algunas pistas y proporciona enlaces a algunos blogs donde buscar inspiración. Por ejemplo, este post Blogging Like a Hacker. El blog del propio Barry Clark, o el How I built my blog in one day de Eric Jones. Me queda pendiente resolver la gestión de categorías y etiquetas, y veo algunas pistas en Tags In Jekyll.

Información técnica sobre las plantillas en Jekyll templates.

No puedo imaginar una bitácora sin RSS. Para añadirlo miré Jekyll RSS Feed Templates. Interesante también la página sobre Plugins en Jekyll. Y sus limitaciones en Using Jekyll Plugins with GitHub Pages.

Finalmente, para integrar mejor el proceso de publicación con el editor (a mi me gusta vim), vim-jekyll.