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

Validate the soft-delete suffix in /api/manage

Abierto Apto para principiantes
#28 0 comentarios 0 reacciones 0 asignados Ver en GitHub

Nadie ha tomado este issue todavía.

Evaluación

Dificultad
2/5
Tiempo estimado
1-3 horas
Aptitud para principiantes
68/100
Tipo de issue
Error
Claridad
Bien especificado
Estado de actividad
Activo
Stack tecnológico
csharp
Área
api, security

Línea de trabajo

Empieza en SoftDeleteRepo en csharp/src/HgResume.Api/Manage/RepoManageService.cs, donde Suffix de SoftDeleteRepoRequest (en Manage/ManageDtos.cs) se pasa a DeletedRepoName dentro de la llamada a Directory.Move. Decide si rechazar el sufijo de antemano con un 400 o comprobar que la ruta resuelta se mantenga dentro de la carpeta eliminada, como sugiere el issue. Está terminado cuando se rechacen los sufijos que contengan / o .. y la forma yyyy-MM-ddTHH-mm-ss__reset siga funcionando.

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

Descripción

POST /api/manage/repos/{code}/soft-delete passes SoftDeleteRepoRequest.Suffix straight into the destination path, with no validation beyond [Required, MinLength(1)]:

// RepoManageService.SoftDeleteRepo
Directory.Move(
    PrefixRepoFilePath(code),
    Path.Combine(deletedRepoPath, DeletedRepoName(code, deletedRepoSuffix))); // $"{code}__{suffix}"

A suffix that contains / or .. segments (e.g. x/../../../somewhere) moves the repo outside _____deleted_____. A suffix like a/b fails with a 500 because the intermediate directory doesn't exist.

The X-Manage-Secret check means only a trusted caller can do this, so the impact is low. It is still worth hardening, since the suffix is the only part of the path the caller controls freely.

Suggested fix: validate the suffix the same way as project codes, e.g. restrict it to [A-Za-z0-9_-] (which still allows the yyyy-MM-ddTHH-mm-ss__reset timestamps LexBox uses) and return 400 otherwise. Alternatively, check that the resolved full path is still under the deleted folder.

Source: csharp/src/HgResume.Api/Manage/RepoManageService.cs (SoftDeleteRepo), Manage/ManageDtos.cs (SoftDeleteRepoRequest).

Lenguaje dominante
C#
Estrellas
0
Forks
1
Métricas de merge de PR
Sin PR fusionados en 30 d

Preparar el entorno

  • Incluye un Dockerfile o un archivo de Docker Compose
  • Sin 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 sillsdev/hgresume

Todos los issues de sillsdev/hgresume

Issues similares

Más issues de C#

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.