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() );
}
}