Hacktoberfest 2026: los issues que los mantenedores marcaron para octubre, abiertos y aptos para principiantes. Explorar issues de Hacktoberfest

Core: Validate header names and values to prevent CRLF injection

Abierto Apto para principiantes
#2,180 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
78/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
java
Área
security

Línea de trabajo

Empieza en HttpHeaders.addHeader() y sigue cómo llegan las cabeceras a HttpHeaders.serializeHeaders(...). Ejecuta las pruebas de regresión indicadas, testSerializeHeaders_crlfInjectionInName y testSerializeHeaders_crlfInjectionInValue, o añádelas si no están presentes. Se considera terminado cuando se rechazan los nombres y valores que contienen CRLF, mientras que las cabeceras válidas siguen serializándose correctamente.

Escrito por el modelo de indexación a partir del texto del issue.

Descripción

Environment details

  1. Core - HttpHeaders in google-http-client
  2. OS type and version: Any
  3. Java version: Any (Java 8+)
  4. google-http-client version: 2.1.1 and earlier

Problem Statement

HttpHeaders does not validate header names or values for carriage return (\r) or line feed (\n) characters. If untrusted input is passed into header names or values, an attacker can inject CRLF sequences leading to HTTP Response Splitting or Header Injection.


Steps to reproduce

  1. Create a HttpHeaders instance with a header name or value containing \r\n.
  2. Serialize headers into a low-level HTTP request using HttpHeaders.serializeHeaders(...).
  3. Observe that the injected header line is accepted without error.

Proposed Fix

Reject header names or values containing CRLF in HttpHeaders.addHeader():

if (name.contains("\r") || name.contains("\n") || stringValue.contains("\r") || stringValue.contains("\n")) {
  throw new IllegalArgumentException("Header name or value contains CRLF characters.");
}

Regression tests (testSerializeHeaders_crlfInjectionInName and testSerializeHeaders_crlfInjectionInValue) are included in the accompanying PR.

Lenguaje dominante
Java
Estrellas
1.4k
Forks
474
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

Primeros pasos

  1. Lee el issue completo y luego la guía de contribución del proyecto.
  2. Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
  3. Haz un fork del repositorio y trabaja en una rama.
  4. Abre un pull request que haga referencia al número del issue.

Más de googleapis/google-http-java-client

Todos los issues de googleapis/google-http-java-client

Issues similares

Más issues de Java

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.