Invalid cookie headers being returned
Dieses Issue hat noch niemand übernommen.
Bewertung
- Schwierigkeit
- 4/5
- Geschätzter Aufwand
- 3-5 Tage
- Anfängerfreundlichkeit
- 25/100
- Issue-Typ
- Bug
- Klarheit
- Größtenteils klar
- Aktivitätsstatus
- Veraltet
- Tech-Stack
- perl
- Bereich
- networking
Rechercherichtung
Beginne damit, den bereitgestellten Perl/Plack-Testfall auszuführen und zu untersuchen, wie die Response-Header über HTTP::Message und HTTP::Headers::Fast zusammengesetzt werden. Bestätige, wie mehrere Set-Cookie-Werte dargestellt und zusammengeführt werden. Als abgeschlossen gilt die Aufgabe, wenn Set-Cookie-Werte getrennt bleiben und die Behandlung doppelter Cookies den zitierten Cookie-Spezifikationen entspricht.
Vom Indexierungsmodell aus dem Issue-Text verfasst.
Beschreibung
Hi there,
I think this might belong against HTTP::Headers::Fast, but it's popping up in a client's Plack stack, so I thought I would start here first. This is a small test case:
#!/usr/bin/env perl
use Test::Most;
use Plack::Response;
use Plack::Test;
my $response = Plack::Response->new(200);
$response->content('Hello World');
$response->cookies->{foo} = {
value => 'test',
expires => time + 24 * 60 * 60,
secure => 1,
};
$response->cookies->{bar} = {
value => 'test2',
expires => time + 24 * 60 * 60,
secure => 1,
};
$response->headers->push_header( 'Set-Cookie', 'foo=that' );
# traditional - named params
test_psgi
app => $response->to_app,
client => sub {
my $cb = shift;
my $req = HTTP::Request->new( GET => "http://localhost/hello" );
my $res = $cb->($req);
like $res->content, qr/Hello World/;
explain scalar $res->headers->header('Set-Cookie');
};
done_testing;
That final line prints:
foo=that, bar=test2; expires=Wed, 06-Jul-2022 12:27:13 GMT; secure, foo=test; expires=Wed, 06-Jul-2022 12:27:13 GMT; secure
Per the IETF spec, we have a couple of violations:
Origin servers SHOULD NOT fold multiple Set-Cookie header fields into a single header field. The usual mechanism for folding HTTP headers fields (i.e., as defined in [RFC2616]) might change the semantics of the Set-Cookie header field because the %x2C (",") character is used by Set-Cookie in a way that conflicts with such folding.
As a consequence of the above, in the last sentence of section 4.1.2, we find the following:
User agents ignore unrecognized cookie attributes (but not the entire cookie).
Because the header fields are joined on a comma, we have an invalid secure, attribute, which suggests that strict cookie parsers might accept the cookie, but ignore the strict attribute. This might be a serious security concern.
Servers SHOULD NOT include more than one Set-Cookie header field in the same response with the same cookie-name. (See Section 5.2 for how user agents handle this case.)
In the above example, we have the cookie foo being set twice, with different values and attributes. This caused a serious authentication issue in our client's code.
Admittedly, this code is being used extensively and I'm unsure about a decent approach to solving it.
- Vorherrschende Sprache
- Perl
- Sterne
- 32
- Forks
- 63
- Ø Merge
- 5 Std. 14 Min.
- Gemergte PRs (30 T.)
- 1
Entwicklungsumgebung
- Kein Dockerfile und keine Docker-Compose-Datei
- Keine Pull-Request-Vorlage
- Beitragsleitfaden lesen
Erste Schritte
- Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
- Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
- Forken Sie das Repository und arbeiten Sie in einem Branch.
- Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.
Mehr aus libwww-perl/HTTP-Message
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 88/100
libwww-perl/HTTP-Message#228 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 82/100
libwww-perl/HTTP-Message#227 ·
-
Schwierigkeit 3/5 1-2 Tage Anfängerfreundlichkeit 42/100
libwww-perl/HTTP-Message#216 ·
-
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 35/100
libwww-perl/HTTP-Message#207 · 1 Kommentar ·
-
Decoding of deflate content-encoding doesn't respect max_body_sizeEvtl. vergeben @simbabque hat das vor 526 Tagen übernommen. Offen
libwww-perl/HTTP-Message#206 · 1 Kommentar · 1 zugewiesene Person ·
Alle Issues in libwww-perl/HTTP-Message
Ähnliche Issues
-
Schwierigkeit 1/5 Unter einer Stunde Anfängerfreundlichkeit 85/100
Maintainer antworten meist innerhalb von 1 Tag
-
bug help wanted
Schwierigkeit 2/5 Unter einer Stunde Anfängerfreundlichkeit 70/100
bioepic-data/bervo#145 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag
-
Type: Bug
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
inverse-inc/packetfence#9413 ·
Maintainer antworten meist innerhalb von 1 Tag
-
Ubuntu .deb packages ship all files owned by uid/gid 1001 (CI user runner) instead of root:rootOffen
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 68/100
-
Help-Wanted Needs-Triage Package-Update
Schwierigkeit 2/5 1-3 Stunden Anfängerfreundlichkeit 72/100
microsoft/winget-pkgs#448814 · 1 Kommentar ·
Maintainer antworten meist innerhalb von 1 Tag