Skip to main content

Lack of data validation - HTML code

Description

Es posible inyectar código HTML válido, que podría interpretarse en el sitio que reciba el JSON de respuesta.

Impact

  • Insert character sequences whose semantics result in the creation of new HTML elements, log file injection, remote command execution or insecure file fetching.
  • Create delivery requests for non-existent QR codes, since the idQR field accepts text strings with random characters.

Recommendation

Validate on the server side the types of data that are entered into different types of fields in the application.

Threat

Unauthorized attacker on the Internet.

Expected Remediation Time

⌚ 90 minutes.

Score

Default score using CVSS 3.1. It may change depending on the context of the vulnerability.

Base

  • Attack vector: N
  • Attack complexity: L
  • Privileges required: N
  • User interaction: N
  • Scope: U
  • Confidentiality: N
  • Integrity: L
  • Availability: N

Temporal

  • Exploit code madurity: X
  • Remediation level: X
  • Report confidence: X

Result

  • Vector string: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N/E:X/RL:X/RC:X
  • Score:
    • Base: 5.3
    • Temporal: 5.3
  • Severity:
    • Base: Medium
    • Temporal: Medium

Code Examples

Compliant code

All input data correctly validates input data before using it

public void doPost( HttpServletRequest request, HttpServletResponse response){
try {
String qrRequest = request.getParameter( "idQR" );
//Use a method to validate that the request is valid using whitelists or similar secure methods
if ( isValidQR(qrRequest) ) {
throw new YourValidationException( "Improper file" );
}
// Process after its been validated ..
} catch(YourValidationException e ) {
response.sendError( response.SC_BAD_REQUEST, e.getMessage() );
}
}

Non compliant code

There is unvalidated input data handled by the application

public void doPost( HttpServletRequest request, HttpServletResponse response){
try {
String qrRequest = request.getParameter( "idQR" );
// Process qr code without validating
} catch(YourValidationException e ) {
response.sendError( response.SC_BAD_REQUEST, e.getMessage() );
}
}

Requirements