Cómo evitar la inyección de código HTML para recuperar la base de datos en servlet y JSP

Si entiendo su pregunta, querrá usar la etiqueta de salida JSTL, con escapeXml = “true”, por ej.

Esto evita las secuencias de comandos entre sitios, donde un contenido malicioso se puede utilizar para engañar a los usuarios, obtener información de su sesión, obtener información de otras pestañas abiertas que tienen, etc.

Eso es para la salida HTML a través de JSP. No desea crear HTML a través de Servlets, porque debe usar expresiones regulares para hacer lo mismo, como indica correctamente su pseudocódigo, y las expresiones regulares a menudo se pueden suplantar fácilmente.

Validar la entrada es la otra mitad, evitando la inyección de SQL, por ejemplo. Para eso, la clave es usar PreparedStatements con variables de enlace en su entrada / actualización SQL, o usar una API de persistencia de datos de nivel superior como Spring Hibernate, JPA, etc. Consulte Java Persistence API – Wikipedia

Estos problemas son una de las principales razones por las que los desarrolladores generalmente han dejado de trabajar directamente en API de nivel inferior, como JSP, Servlets y JDBC, a marcos que proporcionan una solución completa de nivel superior (aunque pueden estar sujetos a sus propios defectos de seguridad).