En esta ocasión te voy a contar sobre el libro Web Application Security, de Andrew Hoffman, de la editorial O’Reilly. Un libro sobre seguridad web que leí por completo hace poco.
El título completo de esta obra es Web Application Security: Exploitation and Countermeasures for Modern Web Applications. Está en idioma inglés y se encuentra en su segunda edición, habiendo sido editado originalmente en el 2020.
Antes de continuar, te dejo un enlace de afiliado para que puedas ver el precio del libro y algunas características más.
La idea de este post es presentarte un panorama general del libro, explicarte cuáles son los temas que trata, cómo los trata y darte mi opinión para que así puedas determinar si vale la pena o no leerlo.
Andrew Hoffman es un ingeniero y autor experto que se especializa en temas de seguridad informática.
La seguridad es un tema fundamental que ningún programador web puede dejar de lado. Según creo yo, hay una serie de buenas prácticas que deben ser seguidas y pensé que este libro podía ayudarme a identificarlas.
Contenido
La paranoia saludable
Hace muchos años que me dedico al desarrollo web y siempre tuve ese miedo a ser hackeado. Creo que es algo saludable que te mantiene alerta.
Antes de leer este libro, creía que conocía los principales mecanismos a través de los cuales podía ser atacado. Por eso me pareció prudente encarar esta obra que, a priori, parecía abarcar los temas más relevantes en materia de seguridad web.
Mi idea era tener una descripción de cada tipo de ataque para obtener una lista de control de todo aquello que hay que hacer para defenderse.
Bueno, si bien el libro me fue de utilidad, no fue exactamente lo que esperaba en su estructura y profundidad.
Veamos a qué me refiero con esto.
¿Cómo está estructurado el libro?
Breve historia de la seguridad informática
El libro comienza con una introducción histórica sobre la evolución de la seguridad informática.
Comienza con los albores de la ciencia de la computación haciendo mención de la famosa máquina Enigma, de Alan Turing, luego pasa a los phreakers y ya en los ochenta explica la evolución del hacking moderno. A partir del año 2000, viene la historia reciente y que está más vinculada con la programación web.
Tras esta introducción histórica, el resto del libro son tres grandes secciones: reconocimiento, ofensiva y defensa.
Reconocimiento
En la sección de reconocimiento se explican técnicas generales que utilizan los hackers y profesionales que trabajan en seguridad informática para encontrar puntos débiles en los sistemas.
Se explican artilugios bastante básicos como hacer búsquedas en Google y luego sigue con descubrimiento de subdominios, análisis de APIs e identificación de software de terceros.
Debo decir que esta parte del libro, si bien me pareció interesante, al mismo tiempo me resultó terriblemente aburrida. Esperaba más profundidad en los temas.
Ofensiva
Aquí los temas se empiezan a poner más interesante. Hay un capítulo dedicado a cada tipo de ataque: XSS, CSRF, XXE, inyecciones, DoS y explotación de software de terceros.
Para cada una de ellas se explica cómo es que se puede aprovechar las ventajas que dan algunos sistemas para hacer daño.
Obviamente, el autor te explica que todo esto te lo cuenta para que vos sepas cómo defenderte, pero no para que te hagas el hacker y empieces a atacar sitios. Sin embargo, claro está, la decisión siempre está en uno.
La pregunta que te podrías estar haciendo es, ¿qué tan fácil de comprender es la explicación técnica de los ataques?
La verdad es que es sencilla porque, en algún punto, las explicaciones son un poco escuetas.
Vale la pena aclarar que Hoffman se vale de Node.js para sus ejemplos de código, por lo que es recomendable que entiendas un poco de este lenguaje.
Hay código y hay diagramas básicos que ayudan a comprender mejor los conceptos. Si tenés un nivel medio de desarrollo web vas a poder comprender todo sin ningún problema.
Defensa
Finalmente, en la tercera parte del libro el autor llega a los temas por los que yo comencé a leer Web Application Security.
Hoffman dedica un capítulo para volver con cada uno de los tipos de vulnerabilidades y de ataque y se toma el trabajo de explicarte cómo hay que defenderse de ellos.
Si ya tenés algo de experiencia en seguridad web, o si trabajás desde hace años en esto, te anticipo que no vas a leer ningún tipo de revelación. En ese caso, más bien, creo que el libro funciona como un recordatorio de tópicos que ya deberías dominar.
Pongamos un ejemplo.
Cuando habla de la mitigación de los ataques por inyección de código, la primera defensa explicada es el principio de mínima responsabilidad, es decir, darle permisos mínimos al usuario de tu base de datos. Y la segunda, es utilizar prepared statements.
Estas son cosas que uno ya debería saber, pero que no viene mal repasarlas. Y no viene nada mal saber también que no hay mucha ciencia más allá de eso. Justamente esto era lo que quería saber cuando comencé a leer el libro.
El libro cierra con un innecesario resumen y una conclusión.
¿Vale la pena Web Application Security?
Si recién estás empezando en el mundo de la programación web, te diría que sí. Te va a dar un panorama general de todo aquello de lo que te tenés que cuidar.
Ahora, si ya tenés años en desarrollo web, te recomiendo que revises el índice y que te empapes un poco más en el tema. Lee alguna otra reseña además de la mía e investigá otros libros sobre el tema.
Yo creo que al libro le falta profundidad. Sin embargo, como no soy experto en el tema, no puedo juzgarlo. Tal vez, si el autor se pusiera serio y agregara ejemplos más complejos, el libro no sería tan accesible.
He leído críticas al libro por parte de la comunidad por el uso de JavaScript y Node.js. Algunos se quejan de que si no se conocen estas tecnologías, es difícil de comprender el libro.
En ese aspecto, discrepo en dos temas.
Primero que nada, el código es básico y es JavaScript. Si programás web, aunque sea solo en el backend y no usás Node.js, algo de JavaScript deberías saber. Es el lenguaje universal de la web hoy en día. No sé, fijate…
Por otro lado, cualquier programador con algo de experiencia puede comprender el código de Node.js de los ejemplos, incluso si no conocen esta tecnología. Todos los lenguajes son más o menos lo mismo, al menos para seguir un libro de esta naturaleza.
Te recuerdo que el libro está en idioma inglés y lo podés conseguir en Amazon. Te dejo otro enlace de afiliado para que puedas ver el precio.
Más contenido sobre programación y modo de vida freelancer en Crónicas Freelancer
Espero que este artículo haya sido de tu interés. Si tenés alguna duda o querés hacer algún aporte, dejame un comentario.
Si estás buscando hosting, te recomiendo Digital Ocean. Seguí este enlace para obtener US$ 200 de crédito para usar en un periodo de 60 días.
Te invito a que me sigas en las redes: LinkedIn, X, GitHub e Instagram. También estoy en CodeWars.
Eso es todo. Muchas gracias por tomarte el tiempo de leerme.
Hasta la próxima.