Quiero probar si una trayectoria determinada por el usuario vaya abajo como:expresión regular para comprobar si hay una ruta de ir solamente abajo
my/down/path
al contrario de:
this/path/../../go/up
por razones de seguridad.
ya he hecho esto:
return (bool)preg_match('#^([a-z0-9_-])+(\/[a-z0-9_-])*$#i', $fieldValue);
Sin embargo, el usuario debe ser permitido el uso de la '.'
en su camino (como: my/./path
, que no es útil, sino que puede) y no sé cómo considerar eso.
Estoy buscando una expresión regular segura para verificar esto.
Gracias
EDIT: Después de ver las respuestas, sí que estaría bien si la verificación de la prueba si el camino real (eliminando '.'
y '..'
) es un camino hacia abajo.
Agregué la etiqueta [de seguridad] que debería llamar más la atención de la pregunta y, con suerte, quizás de alguien que conozca una buena biblioteca de recorrido transversal de PHP. Como mi respuesta sugiere, este es un problema no trivial. –