Ultimate Boot CD Live: Creando un usb arrancable y activar la persistencia.

Hoy descubría la existencia de un interesante proyecto ¿Recordais Ultimate Boot Cd? Se trata de un disco de arranque con utilidades muy tipo Hirens Boot Cd. La cuestión es que han sacado una versión de Ultimate Boot CD basado en un LiveCD de Debian, para poder usar las aplicaciones desde entorno gráfico: Ultimate Boot CD Live. Incluye una colección de freeware, shareware y software libre para poder realizar tareas de reparación y recuperación del sistema que puedes ver listas en la página del proyecto.

El proyecto está guay, pero siendo prácticos a día de hoy muchos equipos, sobre todo portátiles, no tienen cd (mismo el caso del equipo desde el que estoy escribiendo) ¿cómo creamos un cd arrancable con Ultimate Boot CD Live? Pues sin mucha dificultad porque,a fin de cuentas, se trata de una distribución Live de Linux como otra cualquiera. En caso de que seais usuarios de Windows os tocará recurrir a opciones como Universal USB Installer o LinuxLive USB Creator. En caso de estar usando Linux, yo suelo ser partidario de Unetbootin. En todo caso los tres son bastante intuitivos, basta con descargar la ISO desde el enlace al proyecto y seleccionarla luego desde el programa que useis para crear el USB. Con LinuxLive USB Creator ya explicamos aquí en su día cómo hacerlo, y con el resto lo podéis encontrar con una simple búsqueda.

Captura de Pantalla de UBCDLive

Ahora vamos con la parte de la persistencia. En caso de que querais guardar cambios en el USB existe una forma de conseguir un giga de espacio para persistencia. Con el cd una vez creado tenéis que buscar el archivo persistence.bz2 y descomprimirlo, de forma que obtendréis un archivo llamado persistence de un giga de tamaño que es en el que se almacenarán los cambios. Además os tocará modificar el archivo isolinux/live.cfg y añadir toram persistence a los parámetros de arranque tal que así:

label live-486
   menu label ^Live (486)
   menu default
   linux /live/vmlinuz
   initrd /live/initrd.img
   append boot=live config username=root vga=normal toram persistence

label live-486-failsafe
   menu label ^Live (486 failsafe)
   linux /live/vmlinuz
   initrd /live/initrd.img
   append boot=live config username=root memtest noapic noapm nodma nomce nolapic nomodeset nosmp nosplash vga=normal toram persistence

Y con esto ya estaría la opción habilitada, y vuestro pendrive listo para ayudaros a rescatar el sistema.

Eurobasket 2015, en pocas líneas

Año impar y tenemos Eurobasket, el último que se celebrará con el sistema actual que implica uno cada dos años, ya que pasará luego a celebrarse cada cuatro (Fe de erratas: ahí me colé, es a partir del de 2017 cuando pasará a ser cada cuatro años.), igual que el mundial o los JJOO. Es un Eurobasket para no andarse con coñas porque sólo los dos primeros aseguran plaza para los juegos de Río, el resto a jugarse un preolímpico mes y pico antes de la competición, que puede resultar letal. Así que vamos con un minianálisis:

  • Favoritos: Yo veo a cuatro selecciones muy sólidas que son las que deberían pelear por las medallas y la clasificación directa.
    • Serbia:La actual subcampeona del mundo se planta en el Eurobasket con el reto de mantenerse. En el Mundial fueron de tapados y ahora llegan con la vitola de favoritos, con jugadores de talento inmenso pero muy irregulares. El reto de Djordjevic será mantener a sus pupilos con la cabeza en el juego, ya que los tres pilares del equipo, Teodosic, Bjeliça y Bogdanovic, pecan de tener bajones en los momentos más inoportunos: el base parece gafado en las finales (se ha estrellado en la Final Four de la Euroliga en varias ocasiones con Olimpiakos y CSKA) y el último MVP de la Euroliga al fin ha florecido y demostrado todo su nivel, pero en cualquier momento puede volver a pelearse con el mundo. Y otra duda será cómo está la cabeza de Raduljica, que tuvo problemas en China y no acabó de rebañar un buen contrato en la NBA a la vuelta de Asia (desde finales de enero que le cortaron los Wolves, tras dos contratos de 10 días, no ha tenido equipo). Sus principales bajas llegan por parte de Krstiç y Marjanovic, ambos por problemas físicos. Lo dicho, su peor enemigo son ellos mismos, sus cabezas.
    • Grecia: Yo siempre apuesto por Grecia, y en los últimos años siempre fallan. Otro Eurobasket más les veo en el grupo de favoritos, así que habrá que ver si no se repiten situaciones del pasado. El principal problema que tendrá que confrontar Fotis Katsikaris es el de encajar a Spanoulis, que gusta de un juego ofensivo estático y de 5 contra 5, en un equipo donde el resto de pilares (Koufos, Calathes, Zisis, Papanikolau, Antetokounmpo) están más cómodos con un juego rápido y de desborde. ¿Antetokounmpo de tres o de cuatro? El jugador con el mejor físico del torneo habitualmente disputa minutos de 3 en la NBA, pero una competición como esta puede aportar más como 4.
    • Francia:Defiende título y firmó un buen mundial. No tiene bajas importantes, ya que la de Noah era predecible pues lleva tiempo sin acudir a partidos con su selección y a Ajinça no le veo tan difícil de sustituir ya que venía para ser el tercer pivot por detrás de Lauvergne y Gobert (además, siempre puede dar una sorpresa el joven Jaiteh, del Nanterre). Lo que me sorprende es que Collet haya preferido a Diot frente a Heurtel, pero bueno, él es el seleccionador. El quinteto de salida puede ser de lujo: Parker – De Colo – Batum – Diaw y Gobert. Si tengo que poner mi pasta en un equipo a día de hoy apostaría por este.
    • España:En “su” Mundial defraudó quedándose fuera de la lucha por las medallas contra Francia (en el partido que significó la explosión definitiva de Gobert) y llega con bajas importantes al Eurobasket: los dos bases NBA, Ricky Rubio y Calderón, fuera por lesiones. Ibaka promocionando su documental, Navarro sucumbiendo al peso de los años y la fascitis y Marc Gasol “castigado” tras firmar un contrato estratosférico con los Grizzlies (110 millones por 5 años, normal que no le dejen ir). La buena noticia llega por parte de las bajas, concretamente la del inepto Orenga, que ha dejado su sitio a Sergio Scariolo. El engominado no es santo de mi devoción (un Aíto, un Joan Plaza, un Pedro Martínez… pero claro, sigue existiendo esa estúpida norma que no permite que los entrenadores ACB trabajen con la federación) pero mejorará la labor técnica respecto a su predecesor. La dirección de juego recaerá en la pareja del Madrid tetracampeón, los Sergios (Llull y el Chacho) y el peso ofensivo en la pareja interior de los Bulls: Pau Gasol como referente interior y Mirotic como cuatro abierto. Si Rudy está a su mejor nivel, Ribas no se resiente de sus problemas musculares de fin de temporada y el banquillo aporta minutos de calidad (la segunda juventud de Felipe, el recién llegado Hernangómez, un San Emeterio que parece que nunca acaba de explotar en los partidos de selección pero que tiene mucho que ofrecer…) deberían estar al menos en las semis. La duda es si logrará anotar con solidez desde el triple, donde falta un especialista.
  • Antetokounmpo
    ¿Grecia dará la sorpresa o volverá a defraudar?
  • Tapados: Aparte de los cuatro citados veo a tres equipos que pueden pelear por las medallas:
    • Croacia:Un país donde el baloncesto es casi religión, pero que tras su época dorado a inicios de los 90, recién ganada la independencia y con una generación irrepetible (Petrovic, Kukoc, Radja, Vrankovic), llevan dos décadas sin subirse al podio. En 2013 lograron meterse en semifinales y quieren volver a intentar asaltar el trono continental. Sobrados de talento, recursos físicos, técnicos y tiro la dupla Hezonja-Bogdanovic puede ser aplastante, pero dentro de la zona les falta músculo y, sobre todo, garra. Tomic puede ser un estilista, pero no es un bregador.
    • Lituania:El otro país del basket. No están en el vagón de favoritos, pero no lo estaban en 2013 y fueron finalistas, y no lo estaban en el Mundial y acabaron cuartos. Con el veterano Kazlauskas de entrenador, férreo carácter forjado en la época soviética y currículum como pocos pueden presentar en Europa, intentarán suplir su falta de nombres estelares a base de físico, profundidad en la rotación y trabajo sucio en defensa. El referente será Jonas Valanciunas, ya establecido como pivot titular en la NBA. Si finalmente llevan a Domantas Sabonis habrá curiosidad por ver cómo progresa el hijo de uno de los más grandes pivots que haya salido del basket europeo.
    • Italia:Desde el bronce de 2003 no han estado en las quinielas. Antaño una grande, Italia lleva una década sin tener una selección competitiva y su liga ha bajado muchos enteros. Pero en este campeonato hay lugar para la esperanza: Gallinari ha vuelto de su grave lesión y aunque no ha rendido como antes sigue siendo una estrella a nivel Europa. Belinelli pasa por el momento más dulce de su carrera. Bargnani puede ser una decepción en la NBA, pero en basket FIBA sus movimientos ofensivos hacen mucho daño. Datome no tuvo minutos en la NBA y quiere demostrar que daba el nivel. Y Gentile quiere reinvindicarse como futuro NBA. Les falta solidez interior, pero por fuera tienen un equipo terrorífico.
  • Hezonja Barça
    ¿Hezonja quitará la razón a Pascual por ningunearle en el Barça? Durante este Eurobasket lo veremos
  • Otras cosillas:
    • Probablemente sea el último Eurobasket de Nowitzki. Necesita 140 puntos para superar al mítico Nikos Galis como máximo anotador de la historia de los Eurobaskets. Además juegan en casa y se cumplen 10 años de medalla de plata que él lideró. Preparémonos para disfrutar una vez más, seguramente la última en Europa, de este jugón irrepetible.
    • También seguramente sea el último Eurobasket de Pau Gasol, y a Tony Parker puede que le quede uno más, pero podría también ser el último. ¿Fin de una generación irrepetible en Europa?Fe de erratas: Como me colé con lo de los 4 años es probable que en su caso el último sea el de 2017.
    • En los últimos años el baloncesto ha ganado mucha popularidad en Finlandia por el buen sabor de boca que deja el bueno juego de su selección. Petteri Koponen, que viene de firmar un temporadón con el Khimki, es en buena parte culpable de esto. Uno de los jugadores a seguir.
    • Si tuviera que apostar por una sorpresa, creo que sería por los checos: la dirección de Satoransky, un cuatro móvil como Vesely, un stopper trabajador como pocos encarnado en Pavel Pumprla, las rachas en el tiro de Jelinek (letal si tiene el día, desastroso si no) o la veteranía de Lubos Barton. Les falta profundidad pero
    • Los turcos están en transición. El año pasado tanto su selección sub20 como la sub18 se proclamaron campeones europeos, tienen un futuro muy prometedor pero el presente es que se encuentran en un grupo complicado junto a Serbia, Italia, España y la anfitriona Alemania. Pelearán por la cuarta plaza.
    • Rusia casi se queda fuera por los mamoneos de su federación y llegará al torneo muy debilitada. ¿Pegarán la campanada? Veremos cómo debuta Kirilenko en su nuevo cargo como presidente de de la federación.
Ribas España
Ribas tendrá que suplir la baja de Navarro. Un relevo de mucha responsabilidad que también tendrá que tomar en el Barcelona

SQL-Server ¿es mejor usar MAX() o TOP 1?

Una duda me asaltaba el otro día preparando una serie de consultas, en una de las cuales tenía que sacar la fecha más alta de una serie de registros. ¿Consumía menos recursos un MAX() o acaso era mejor recurrir a la conjunción de order by y Top 1?

Rebuscando por duckduckgo me encontré con este blog donde disipan la duda:

  1. Si el campo a buscar forma parte de un índice cluster, entonces da igual porque ambas se ejecutan a una velocidad extremadamente rápida
  2. Si el campo a buscar no es un índice cluster entonces MAX() da una respuesta más rápida porque la función está mejor optimizada y tiene menos carga que realizar un order by después del select

En el artículo original están los bancos de pruebas con resultados concretos.

Terrordrome: El videojuego de lucha que llevabas años deseando

El otro día a través de los amigos de Zinemaníacos descubría este videojuego. Vi la entrada en el móvil mientras esperaba en un bar así que hasta hoy no me puse a buscarlo (de hecho tuve que preguntarles cómo se llamaba, que ya ni lo recordaba).

Herbert West vs Violent Cop

¿Por qué es El videojuego de lucha que llevabas años deseando? pues porque en él podrás enfrentar a los grandes psicópatas del cine de terror cara a cara. Sí, los grandes entre los grandes: Jason Voorhees (en dos versiones, con machete y con hacha), Freddy Krueger, Leatherface, Micheal Myers, Ashley “Ash” Williams, The Tall man, Chucky, Ghostface, Matt Cordell, Candyman, Herbert West, Pumpkinhead y Pinhead. Menuda pandillita para irse de cañas.

Terrordrome Ash Evil Dead
Ash vs Ash, rememorando El Ejército de las Tinieblas!

El juego ha sido creado por un fan y, como pasaba con el PC Fantacanestro del que hablamos hace tiempo, se pasa por el forro los temas de licencias y nos regala esta experiencia. ¿Los gráficos podrían ser mejores? Por supuesto. ¿La jugabilidad? Para el que se criara con los arcades de los 90 es la habitual. ¿Merece la pena? Si eres aficionado a los juegos de lucha no te engañaré, es un juego indie muy del montón, aquí la gracia radica en los personajes de los que dispones que lo hacen la fantasía de todo buen friki del género. Si te han flipado películas como Posesión Infernal, Pesadilla en Elm Street, Phantasma, Halloween, Muñeco Diabólico o Viernes 13 es un juego que debes probar. A fin de cuentas es gratis así que sólo pierdes el rato en descargarlo si no te acaba de convencer, y si te gustan esas pelis pasarás un rato muy divertido.

Carátulas películas Terrordrome

El juego está creado para Windows XP o superior, pero lo he probado en un Ubuntu 14.04 y en un ElementaryOS y en ambos me ha funcionado con Wine como una seda, así que que el aficionado Linuxero no se quedará sin disfrutarlo. Lo dicho, una frikada más que recomendable para divertiros.

Chucky vs Herbert West

El juego está disponible para ser descargado desde la página del proyecto. Esperemos que no lo tumben por algún tema de derechos para poder seguir disfrutando la frikada. Os dejo un enlace a un vídeo con un gameplay.

Terrordrome: old school vs new school

Sonic Blast Moledo 2015: La crónica express

Voy a intentar un ejercicio condensado para contaros cómo fue el Sonic Blast de Moledo de este año sin romperme ni romperos mucho la cabeza con largas crónicas. Así que me marco un análisis por partes:

horarios mapa sonic blast moledo 2015

  • Organización y ubicación:
    • La zona de acampada es grande y se pueden encontrar sitios a la sombra. En 10-15 minutos se llegaba caminando, dependiendo del aplomo.
    • Los precios bien, al menos desde el punto de vista de alguien que visita festivales españoles. Cañas a 1.50 en el recinto, te puedes cascar una feijoada en la puerta por 5 pavos. Comer y beber en el pueblo, más barato todavía (3.60 € por tres tercios de Superbock en terraza de primera línea de playa, 7 euros por una bandeja de pollo, ensalada, patatas y arroz que daba para dos personas).
    • El pueblo es bonito, una zona clásica de surf de Portugal. Una lástima el tiempo gris que coincidió este año, con un finde soleado habría sido increíble.
    • Sonido muy bien: le daría un 8/10, incluso en el escenario pequeño se podía escuchar todo con nitidez. El volumen tal vez un poco bajo, pero mejor eso que el que sea molesto o se convierta en una bola ininteligible. Horarios con puntualidad británica, aunque hubo algún cambio excesivamente largo (casi 50 minutos entre The Vintage Caravan y Pentagram, 40 minutos entre Greenleaf y My Sleeping Karma).
    • A mejorar: lo único diría que si hubiesen puesto el doble de duchas en la acampada y algunos retretes más (y los hubiesen limpiado con mayor asiduidad) habría quedado perfecta la zona. Otro fallo fue el no tener al final after party con música hasta el amanecer, porque llegaba la gente con ganas de fiesta al camping y para la gente que quería dormir era una putada. Mi propia experiencia en ese sentido fue que el viernes me metí en la tienda con idea de dormir temprano y ante la imposibilidad de hacerlo acabé quedándome hasta casi las seis tocando canciones de Motorhead con un ukelele junto a los de la tienda de al lado.
  • Bandas del viernes:
    • Pool Stage: El concepto de piscina junto al escenario es cojonudo, una pena que el astro rey no acompañara más para disfrutarlo al 100%. Diría que menos Nervous, que no me agradaron en absoluto con su hardcore californiano, el resto de las bandas cumplieron muy bien su papel. A los The Black Wizards, con un toque muy setentero, y a los The Attack of the Brain Eaters, con un rock guitarrero noventero con buena pegada, les dejo la etiqueta de “bandas a seguir en el futuro”, ya que son grupos jóvenes y que me dejaron buenas sensaciones. Tampoco me desagradaron los Mantra, a pesar de tener un toquecillo muy grunge/alternativo en su sonido stoneriano. De Cuchillo de Fuego no me esperaba gran cosa porque lo que había oído no me había gustado pero su directo cambió totalmente mi percepción: locura y delirio, un directo con mucha fuerza y momentos surrealistas que me sorprendió muy gratamente.
    • Main Stage: Como dije antes, Nervous no me convencían y bajamos al pueblo a tomar unas cervezas. Nos perdimos a High Fighter y llegamos para Belzebong. Los polacos, con su stoner/doom instrumental, pesado y primitivo, mezclado con el humo, las imágenes malrolleras proyectadas detrás y la intensa iluminación verde sobre el escenario lograron un efecto hipnótico muy profundo con su directo. Para mi, los “subcampeones” del día. Vi un rato de Plus Ultra, aunque su propuesta extremadametne experimental no era muy de mi agrado y salí a cenar. Volví justo para ver como el cantante se ponía a destrozar el equipo en una vorágine destructiva. No son de mi gusto, pero desde luego el directo es intenso. Tras estos llegaron los que, para mi, fueron los campeones del primer día: Greenleaf. Los suecos, con una combinación de stoner con hard rock clásico, bromearon con que no eran ZZ Top por tener todos barba y luego nos regalaron una buena ración de riffs digna de Texas. Me quedé enamorado de su sonido y lamenté que no hubieran durado un ratito más. Quedaban My Sleeping Karma, pero 40 minutos de cambio sumados a una noche de camping y un día con mucho caminar y mucha cerveza hicieron mella en mi y me bajé al camping (el resto de la historia, ya la habéis leído arriba).
  • Bandas del sábado:
    • Pool Stage: El tiempo todavía acompañó menos el sábado en el pool stage. Por motivos diversos (gastronómicos) llegué cuando llevaban sólo un par de temas tocados mis vecinos los Puma Pumku, aunque por suerte ya había visto a los Galactic Superlords y a Astrodome el jueves en la warm up party, y he de decir que los primeros me gustaron mucho, otra banda con ticket de “a seguir” que juega con un sonido de rock pesado setentero pero con unas guitarras dobladas muy heavys, muy NWOBHM. Las dos bandas que cerraron este escenario estuvieron excelentes: Lámina descargaron una buena ración de stoner metal de riffs cañeros y ritmos obsesivos, pero la lluvia comenzó a caer más fuerte desplazando a la gente hacia la parte cubierta a la derecha del escenario. La lluvia continuó mientras los ucranianos Somali Yatch Club levantaban un poco el pie de nuestros aceleradores con su stoner rock más psicodélico. Como ya he dicho, estos dos últimos grupos también bandas “a seguir”
    • Main Stage:: Entré con la intención de pillar una camiseta (y pipear si andaba con los Pentagram el inefable Sean Pelletier) y de bajar al camping a por ropa de abrigo, pero Libido Fuzz me convencieron con su apuesta por la psicodelia con dejes clasicotes. Bajé a toda prisa pero a pesar de eso me perdí el comienzo de los Wight, otra banda que apostaba por la psicodelia old school pero jugando con alguna influencia del rock de los 90, muy buenos. Y llegamos a los platos fuertes: los ascendentes islandeses The Vintage Caravan (aunque no hagan tantos solos de ballena como deberían), si no se agotan ni echan a perder, son una banda que puede llegar muy lejos pues todavía son muy jóvenes (a pesar de que ya cuenten con tres discos, si contamos el autoproducido de 2009). Lo de Pentagram fue harina de otro costal. Impresionante el concierto de los discípulos de Bobby Liebling, tremendos. Superaron todas mis espectativas y se cascaron un set list con sus clásicos junto a algunas piezas de su último trabajo. Tras los años de frustración que vimos en Last Days Here al fin las cosas le sonríen musicalmente a Liebling y nos ofrece conciertos dignos de ese talento que las drogas sepultaron por tantos años. Acabaron Mother Engine, pero tras dos temas me recogí. Ojo, que el grupo no está mal, pero cerrar con una banda de psicodelia instrumental a mi no me acaba de levantar, si hubieran tocado a media tarde me los habría visto enteros porque estaban sonando bien, pero era el típico momento que el cuerpo te pideo o caña o cama.
The Vintage Caravan Moledo
Foto del concierto de The Vintage Caravan a cargo de mi colega Gaius Baltar

¿Una conclusión? Pues que si para el año el cartel trae algo de mi gusto (cof cof cof The Sword, Witchcraft o Graveyard sería un puntazo, cof cof cof y Sandford Music Factory cof cof cof) no dudaré en repetir. Un festival que de momento se ha posicionado muy bien entre mis preferencias.

Clase para prevenir ataques XSS en Java

Buscando información para aumentar la seguridad de una aplicación web basada en Java me encontré con esta clase para filtrar los posibles ataques XSS en la web de un veterano ingeniero llamado Ricardo Zuasti.

Su solución propone dos clases. La primera, que copio de su entrada original a continuación, lo que hace es filtrar las peticiones HTTP para que sean filtradas por la clase especializada creada para eso:

public class XSSFilter implements Filter {
 
    @Override
    public void init(FilterConfig filterConfig) throws ServletException {
    }
 
    @Override
    public void destroy() {
    }
 
    @Override
    public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain)
        throws IOException, ServletException {
        chain.doFilter(new XSSRequestWrapper((HttpServletRequest) request), response);
    }
 
}

Tras esto propone la siguiente clase para realizar el filtrado. Esta clase sobreescribe los métodos getParameterValues(), getParameter() y getHeader() y utiliza una serie de patrones para evitar la entrada de código malicioso en tu web. El método stripXSS() es el que realiza la labor de filtrado.

import java.util.regex.Pattern;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletRequestWrapper;
 
public class XSSRequestWrapper extends HttpServletRequestWrapper {
 
    private static Pattern[] patterns = new Pattern[]{
        // Script fragments
        Pattern.compile("<script>(.*?)</script>", Pattern.CASE_INSENSITIVE),
        // src='...'
        Pattern.compile("src[\r\n]*=[\r\n]*\\\'(.*?)\\\'", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
        Pattern.compile("src[\r\n]*=[\r\n]*\\\"(.*?)\\\"", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
        // lonely script tags
        Pattern.compile("</script>", Pattern.CASE_INSENSITIVE),
        Pattern.compile("<script(.*?)>", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
        // eval(...)
        Pattern.compile("eval\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
        // expression(...)
        Pattern.compile("expression\\((.*?)\\)", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL),
        // javascript:...
        Pattern.compile("javascript:", Pattern.CASE_INSENSITIVE),
        // vbscript:...
        Pattern.compile("vbscript:", Pattern.CASE_INSENSITIVE),
        // onload(...)=...
        Pattern.compile("onload(.*?)=", Pattern.CASE_INSENSITIVE | Pattern.MULTILINE | Pattern.DOTALL)
    };
 
    public XSSRequestWrapper(HttpServletRequest servletRequest) {
        super(servletRequest);
    }
 
    @Override
    public String[] getParameterValues(String parameter) {
        String[] values = super.getParameterValues(parameter);
 
        if (values == null) {
            return null;
        }
 
        int count = values.length;
        String[] encodedValues = new String[count];
        for (int i = 0; i < count; i++) {
            encodedValues[i] = stripXSS(values[i]);
        }
 
        return encodedValues;
    }
 
    @Override
    public String getParameter(String parameter) {
        String value = super.getParameter(parameter);
 
        return stripXSS(value);
    }
 
    @Override
    public String getHeader(String name) {
        String value = super.getHeader(name);
        return stripXSS(value);
    }
 
    private String stripXSS(String value) {
        if (value != null) {
            // NOTE: It's highly recommended to use the ESAPI library and uncomment the following line to
            // avoid encoded attacks.
            // value = ESAPI.encoder().canonicalize(value);
 
            // Avoid null characters
            value = value.replaceAll("\0", "");
 
            // Remove all sections that match a pattern
            for (Pattern scriptPattern : patterns){
                value = scriptPattern.matcher(value).replaceAll("");
            }
        }
        return value;
    }
}

Entre las recomendaciones que da en el artículo original está la de configurar este filtro como el primero en tu web.xml y también, en referencia al código que aparece comentado en la segunda clase, echarle un ojo a la librería ESAPI, que nos proporciona diversas soluciones de seguridad.

Desde aquí sólo me queda enviarle mi agradecimiento por su trabajo al señor Zuasti y animarle a recuperar su blog, que tiene material interesante pero hace tiempo que no actualiza.

Comprimiendo en zip desde línea de comandos en Linux (Ubuntu/Debian)

Esta mañana a uno de mis equipos se empezó a ir un poco la pinza. No me digais por qué pero si intentaba comprimir utilizando la utilidad gráfica por defecto de Ubuntu no me lo permitía, se quedaba tirado el programa al hacerlo. Al final se arregló reinstalando, pero el caso es que en aquel momento no tenía conexión a internet para hacerlo y necesitaba crear un zip para pasarle una serie de archivos a una usuaria de Windows. Así que tocó usar la consola de comandos.

¿Cómo hice para comprimir la carpeta? Bueno la sintaxis del comando zip es

zip nombreDeArchivoFinal archivoacomprimir1 archivoacomprimir2…

En el ejemplo os dejo varias posibilidades comentadas:

#para incluir subdirectorios
#hay que añadir la opción -r
zip -r resultado.zip carpeta1

#con el comodín * podemos comprimir
#todos los ficheros dentro de una carpeta
zip resultado.zip *

#zip nos permite proteger el archivo
#con una contraseña, pero hay que
#ver que su algoritmo no es muy seguro
zip --password MI_CONTRASEÑA_ELEGIDA protegido.zip archivo1 archivo2 archivo3

#Una opción para codificar con más seguridad sería usar GPG
#primero comprimimos en zip
#luego codificamos la carpeta
#nos pedirá que insertemos la contraseña tras el comando GPG
zip -r resultado.zip carpeta1
gpg -c resultado.zip

#otra opción es usar openssl para encriptar
#primero comprimimos en zip
#luego codificamos la carpeta
#y nos pedirá password igual que antes
zip -r resultado.zip carpeta1
openssl aes-256-cbc -e -in resultado.zip -out resultado.zip.aes

En los ejemplos hemos usado criptografía de clave simétrica, pero siempre podeis investigar formas de utilizar algoritmos de clave pública/privada, ya que tanto gpg como openssl están pensados para poder hacerlo.