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

pathFor: adoptPage trusts a mutable page global and a NUL/replacement-char id can escape-collide

Abierto
#220 1 comentario 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
3/5
Tiempo estimado
1-2 días
Aptitud para principiantes
65/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Tranquilo
Stack tecnológico
playwright, typescript

Línea de trabajo

Start by locating adoptPage and the path helper, then inspect the duplicate-id fix in #182 and #215. Check how the helper is chosen and how escaped id selectors are validated, including invalid-selector handling. Done means page-defined globals cannot collapse paths and distinct elements with NUL or U+FFFD ids do not share a path; verify with focused tests for both cases.

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

Descripción

area: engine bug security

Follow-up to #182 / #215.

What is wrong

Two residual identity-collision paths remain after the duplicate-id fix:

  1. adoptPage installs the path helper only if window.__usablPathFor is not already a function. A page that already navigated can define its own window.__usablPathFor = () => '#dup', and adoptPage preserves it, so every element collapses to one identity.
  2. The uniqueness guard checks that the escaped id selector matches exactly one element, not that the match is the element in hand. A NUL id and a literal U+FFFD id both escape to the same selector, so two distinct elements can still collide.

Why it matters

Both reintroduce the set-difference false green the id-collision work closed, for a page that is hostile or has unusual ids.

Fix

Do not trust a mutable page global: evaluate a private path function per query, or install an immutable binding. Before using an id selector, require exactly one match AND matches[0] === element, with invalid-selector handling.

Lenguaje dominante
TypeScript
Estrellas
0
Forks
0
Merge medio
2 h 48 min
PR fusionados (30 d)
8

Preparar el entorno

  • Sin Dockerfile ni archivo de Docker Compose
  • Tiene una plantilla de pull request
  • Sin guía de contribución

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 usabl-dev/usabl

Todos los issues de usabl-dev/usabl

Issues similares

Más issues de TypeScript

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.