fix(core): corrige comprobación de carpeta segura en Windows#2008
Open
abdedarghal111 wants to merge 1 commit into
Open
fix(core): corrige comprobación de carpeta segura en Windows#2008abdedarghal111 wants to merge 1 commit into
abdedarghal111 wants to merge 1 commit into
Conversation
La ruta del archivo se comparaba antes de normalizar con realpath(), mezclando separadores '/' de la URL con '\' de DIRECTORY_SEPARATOR en Windows. Esto hacía que isFolderSafe() nunca encontrara coincidencia y se rechazara como UnsafeFolder cualquier recurso estático (CSS, JS, imágenes de Core, node_modules, vendor...). Se mueve la comprobación de isFolderSafe() a después de resolver realpath(), igual que ya hace Myfiles.php.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problema
Al ejecutar FacturaScripts con el servidor embebido de PHP en Windows nativo (
php -S 127.0.0.1:8080 -t . index.php), todos los recursos estáticos (CSS, JS, imágenes deCore,node_modules,vendor...) devolvían el errorUnsafeFolder, impidiendo el acceso a cualquier página excepto la de despliegue.Causa
En
Core/Controller/Files.php, la ruta del archivo solicitado se construía concatenandoTools::folder()(que usaDIRECTORY_SEPARATOR) con la URL de la petición (que siempre usa/). La comprobaciónisFolderSafe()se ejecutaba sobre esa ruta antes de normalizarla conrealpath(), comparando cadenas con separadores mezclados.En Linux/macOS/WSL,
DIRECTORY_SEPARATORes/, por lo que nunca había mezcla y el bug pasaba desapercibido. En Windows,DIRECTORY_SEPARATORes\, y la comparación deisFolderSafe()nunca encontraba coincidencia, rechazando cualquier archivo como carpeta insegura.Solución
Se mueve la comprobación
isFolderSafe()a después de resolverrealpath(), igual que ya hacíaMyfiles.phppara el mismo tipo de comparación. Así la ruta queda siempre normalizada con el separador correcto del sistema operativo antes de compararla.Pruebas
node_modules,Core/Assets, etc.) se sirven correctamente.¿Cómo has probado los cambios?
Toda modificación debe haber sido mínimamente probada. Marca o describe las pruebas que has realizado: