XSS
La vulnerabilidad “Cross-Site Scripting (XSS)” está relacionada con una pobre validación de datos de entrada a la aplicación que permite la inyección de código script (generalmente JavaScript), el cual posteriormente puede ejecutarse en la parte cliente de un usuario y realizar acciones como obtener sesiones de usuario y otras acciones que puede comprometer la confidencialidad e integridad de la aplicación. Dado que el código inyectado se almacena por la aplicación, la vulnerabilidad XSS se considera persistente.
Riesgo del ataque
Robo de datos sensibles.
Ataques CSRF (Cross Site Request Forgery).
SuplantaciĂłn de usuarios.
Si el atacante suplanta un usuario con los permisos adecuados, podrĂa ejecutar cĂłdigo en el servidor.
Â
CĂłdigo vulnerable 1:
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws IOException {
  String name = req.getParameter("name");
  PrintWriter out = resp.getWriter();
  out.write("Hello " + name);
} |
SoluciĂłn:
Se debe implementar una validación que impida introducir más parámetros de los necesarios, asà como caracteres innecesarios.
En este caso se debe utilizar anotaciones de Spring o expresiones regulares, sabiendo que formato debe tener la entrada.
private static final Pattern namePattern = Pattern.compile("^[a-zA-Z]+(([',. -][a-zA-Z ])?[a-zA-Z]*)*$");
Â
public void doPost( HttpServletRequest req, HttpServletResponse resp) {
  try {
      String name= req.getParameter( "name" );
      if ( !namePattern.matcher( name).matches() {
          throw new YourValidationException( "Improper name format." );
      }
      // do what you want here, after its been validated ..
  } catch(YourValidationException e ) {
      resp.sendError( response.SC_BAD_REQUEST, e.getMessage() );
  }
} |
Referencias:
https://owasp.org/www-project-top-ten/OWASP_Top_Ten_2017/Top_10-2017_A7-Cross-Site_Scripting_(XSS)
https://cheatsheetseries.owasp.org/cheatsheets/Cross_Site_Scripting_Prevention_Cheat_Sheet.html
https://owasp.org/www-community/OWASP_Validation_Regex_Repository
https://www.netsparker.com/blog/web-security/cross-site-scripting-xss/
Â