Estoy configurando un pequeño sitio web de alojamiento de códigos, en la vena de github o bitbucket. Me gustaría permitir que los usuarios especifiquen una URL arbitraria desde la cual el servidor de mi sitio clonará inicialmente su repositorio. Estoy usando mercurial, por lo que la clonación básicamente significa negociar un protocolo simple basado en HTTP entre el cliente (mi servidor en este caso) y el host (la URL que el usuario ha proporcionado).
No conozco todos los detalles del protocolo mercurial, pero implica realizar algunas solicitudes GET y POST HTTP y especificar algunos parámetros de consulta en la URL proporcionada por el usuario. Aparte de la URL, el usuario no debe tener ningún control sobre las solicitudes que se envían desde mi sitio a la URL que especifican.
Si tiene éxito, la interacción con la URL proporcionada producirá un conjunto de archivos, que se enviarán desde mi sitio, posiblemente a otros usuarios, pero no directamente, con la excepción de las imágenes. En otras palabras, si se trata de un archivo de imagen, lo serviré, pero de lo contrario solo se podrá ver como texto de escape.
¿Hay alguna implicación de seguridad que deba tener en cuenta con esto? Entiendo que no puedo mostrar HTML, Javascript, Flash, etc. proporcionados por el usuario de forma arbitraria y, a menos que haya un problema con la entrega de imágenes arbitrarias que no conozco, creo que la parte de la porción debería estar bien. Me preocupa más la interacción con direcciones URL arbitrarias que proporcionó un usuario.