Reject invalid control frames when building output

Geschlossen Anfängerfreundlich
#304 0 Kommentare 0 Reaktionen 0 zugewiesene Personen Auf GitHub ansehen

Dieses Issue hat noch niemand übernommen.

Bewertung

Schwierigkeit
2/5
Geschätzter Aufwand
1-3 Stunden
Anfängerfreundlichkeit
76/100
Issue-Typ
Bug
Klarheit
Klar beschrieben
Aktivitätsstatus
Aktiv
Tech-Stack
python
Bereich
networking

Rechercherichtung

Beginne bei Frame.build() und verfolge, wie PingControlMessage.single() und Message.fragment(..., last=False) dorthin gelangen; vergleiche diese Pfade mit der Validierung von control frames im stream parser. Die Arbeit ist abgeschlossen, wenn übergroße oder fragmentierte ping-, pong- und close-frames beim Erstellen zurückgewiesen werden, während gültige control frames weiterhin normal serialisiert werden.

Vom Indexierungsmodell aus dem Issue-Text verfasst.

Beschreibung

Frame.build() validates opcodes and payload lengths, but does not enforce two WebSocket control-frame rules: payloads must be 125 bytes or fewer, and FIN must be set.

For example, PingControlMessage(b"x" * 126).single() emits a 126-byte ping frame. The stream parser rejects a received control frame over 125 bytes, so ws4py can emit a frame that ws4py itself rejects. Message.fragment(..., last=False) can also emit a fragmented ping, pong, or close frame.

Please validate these control-frame constraints in the frame builder so the message helpers cannot serialize invalid control frames.

Vorherrschende Sprache
Python
Sterne
1.1k
Forks
285
PR-Merge-Kennzahlen
Keine gemergten PRs in 30 T.

Entwicklungsumgebung

Dieses Projekt bietet weder Dev-Container noch Dockerfile noch Beitragsleitfaden – die Einrichtung liegt bei Ihnen. Beginnen Sie mit der README; die allgemeinen Schritte stehen in unserem Leitfaden für den ersten Beitrag.

Erste Schritte

  1. Lesen Sie das ganze Issue und danach den Beitragsleitfaden des Projekts.
  2. Schreiben Sie ins Issue, dass Sie es übernehmen — das erspart doppelte Arbeit.
  3. Forken Sie das Repository und arbeiten Sie in einem Branch.
  4. Öffnen Sie einen Pull Request, der die Issue-Nummer nennt.

Mehr aus Lawouach/WebSocket-for-Python

Alle Issues in Lawouach/WebSocket-for-Python

Ähnliche Issues

Weitere Issues zu Python

Neue Issues direkt in Ihr Postfach

Eine kurze Übersicht über anfängerfreundliche GitHub-Issues.