low-and-slow/slowlorris "attack" on client
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 48/100
- Tipo de issue
- Error
- Claridad
- Bastante claro
- Estado de actividad
- Tranquilo
- Stack tecnológico
- python
- Área
- networking
Línea de trabajo
Empieza ejecutando la reproducción proporcionada de httpx.get contra el código más reciente del proyecto y, después, sigue cómo se gestionan las configuraciones de timeout connect, read, write, pool y total para clientes síncronos y asíncronos. Revisa las pruebas de timeout existentes y la discusión antes de decidir cuál es el comportamiento esperado; se considera terminado cuando el caso de slow-drip queda limitado por un mecanismo de timeout disponible sin introducir regresiones en el streaming normal.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
Originally opened by
@Granitosauruson 2021-01-11 09:36:15 in encode/httpx
- The bug is reproducible against the latest release and/or
master. - There are no similar issues or pull requests to fix it yet.
Currently both async and sync client requests are succeptible to low-and-slow "attacks" unless explicitly handled. In other words when request is being streamed as long as 1 byte every 2 seconds (or aprox.) is being generated the connection will not close or timeout with none of the current available settings.
It's possible for the server to serve single html page almost idefinitely and hang the client thread.
Maybe httpx should introduce some optional or even default handlers for this? Maybe it's already possible to hook something like this in easily?
To reproduce
resp = httpx.get(
"http://httpbin.org/drip?duration=30&numbytes=30&code=200&delay=2",
timeout=Timeout(connect=3, read=3, write=3, pool=3, timeout=3),
)
The above code snippet will take 30+ seconds to complete disregarding any timeout settings. The only way to avoid this is to explitictly wrap everything in either asyncio.wait_for() for async code and for sync code seems to be much more complicated (?).
- Lenguaje dominante
- Python
- Estrellas
- 1.6k
- Forks
- 103
- Merge medio
- 1 d 19 h
- PR fusionados (30 d)
- 25
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Tiene una plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de pydantic/httpx2
-
Please revert aiter_bytes signature to AsyncIteratorQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
pydantic/httpx2#1158 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Export AutoBackendQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 1/5 Menos de una hora Aptitud para principiantes 92/100
pydantic/httpx2#1131 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Mention header name error message for invalid header encodingsQuizá libre de nuevo Un pull request para esta issue se cerró sin fusionarse. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
pydantic/httpx2#864 · 3 comentarios ·
Los mantenedores suelen responder en 1 día
-
Support DigestAuth with "x-www-authenticate" in first response headerPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
Los mantenedores suelen responder en 1 día
Todos los issues de pydantic/httpx2
Issues similares
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 85/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 62/100
OCA/account-invoicing#2529 ·
Los mantenedores suelen responder en 1 día
-
area/ci
Dificultad 1/5 Menos de una hora Aptitud para principiantes 62/100
Los mantenedores suelen responder en 1 día
-
ImageGen generate-batch aborts valid JSONL jobs containing a Unicode line separator in poster textAbiertobug imagen skills
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día
-
Email validation accepts a trailing newlinePosiblemente ocupada @marcello-pichini la tomó hoy. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
Los mantenedores suelen responder en 1 día