Skip to content

Commit e43fae7

Browse files
miss-islingtontadejmagajnavstinner
authored
[3.13] gh-142533: Document CRLF injection vulnerabilities in http.server doc (GH-143395) (#148021)
gh-142533: Document CRLF injection vulnerabilities in http.server doc (GH-143395) (cherry picked from commit 617f4cc) Co-authored-by: Tadej Magajna <tmagajna@gmail.com> Co-authored-by: Victor Stinner <vstinner@python.org>
1 parent 45c9220 commit e43fae7

File tree

1 file changed

+9
-0
lines changed

1 file changed

+9
-0
lines changed

Doc/library/http.server.rst

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -247,6 +247,8 @@ provides three different variants:
247247
specifying its value. Note that, after the send_header calls are done,
248248
:meth:`end_headers` MUST BE called in order to complete the operation.
249249

250+
This method does not reject input containing CRLF sequences.
251+
250252
.. versionchanged:: 3.2
251253
Headers are stored in an internal buffer.
252254

@@ -257,6 +259,8 @@ provides three different variants:
257259
buffered and sent directly the output stream.If the *message* is not
258260
specified, the HTTP message corresponding the response *code* is sent.
259261

262+
This method does not reject *message* containing CRLF sequences.
263+
260264
.. versionadded:: 3.2
261265

262266
.. method:: end_headers()
@@ -553,6 +557,11 @@ Security considerations
553557
requests, this makes it possible for files outside of the specified directory
554558
to be served.
555559

560+
Methods :meth:`BaseHTTPRequestHandler.send_header` and
561+
:meth:`BaseHTTPRequestHandler.send_response_only` assume sanitized input
562+
and does not perform input validation such as checking for the presence of CRLF
563+
sequences. Untrusted input may result in HTTP Header injection attacks.
564+
556565
Earlier versions of Python did not scrub control characters from the
557566
log messages emitted to stderr from ``python -m http.server`` or the
558567
default :class:`BaseHTTPRequestHandler` ``.log_message``

0 commit comments

Comments
 (0)