Si probamos la aplicación desarrollada en la entrada anterior observamos que es vulnerable a un simple ataque SQL Injection como "1' AND 1='1" para logearnos o XSS como "<script>javascript:alert(1);</script>" tanto en los posts como en los comentarios. En esta entrega vamos pues a esterilizar (sanitize) las entradas del usuario.
Usaremos las clases de referencia de ESAPI (/src/reference) siempre que podamos ya que son sencillas implementaciones de las interfaces definidas en /src y suficientes para nuestros propósitos con pequeños cambios. Empezamos modificando ligeramente la clase DefaultSecurityConfiguration ( /src/reference/DefaultSecurityConfiguration.php) para arreglar un pequeño bug que el equipo de OWASP no ha considerado necesario arreglar desde que se escribió el artículo original. Abrimos el archivo y ejecutamos un buscar + sustituir cambiando todos los $this->logSpecial por $this->_logSpecial. La función _logSpecial imprime un mensaje de error en pantalla y nos interesa que lo haga en un log así que la cambiamos por:
private function _logSpecial($msg)
{
ESAPI::getAuditor('DefaultSecurityConfiguration')->warning(Auditor::SECURITY, false, $msg);
}