Obtendo o diretório pai com curl

0

Acabei de escrever um servidor muito básico que serve todos os arquivos em um diretório chamado public . Agora, este servidor não tem nenhum tipo de recurso de segurança (como eu disse, muito básico) e então eu esperaria que o seguinte comando curl me desse o conteúdo de um arquivo fora desse diretório:

curl 127.0.0.1:3000/../fileInTheParentDirectory.txt

No entanto, isso não funciona. Monitorar o tráfego com o violinista mostrou o motivo: ele está realmente ignorando o .. e tentando acessar 127.0.0.1/fileInTheParentDirectory.txt . Agora, certamente não me importo de ter recursos de segurança gratuitos, mas não entendo por que isso está acontecendo. Então, minha pergunta é: O curl remove automaticamente o .. ? Se sim, desde que versão fez isso?

Encontrei recursos que afirmam que isso deve funcionar, então estou achando que o comportamento foi alterado ou diferente com sistemas operacionais diferentes ou algo assim.

Se for relevante, aqui está minha saída de curl --version :

curl 7.50.3 (x86_64-apple-darwin14.5.0) libcurl/7.50.3 OpenSSL/1.0.2j zlib/1.2.8
Protocols: dict file ftp ftps gopher http https imap imaps pop3 pop3s rtsp smb smbs smtp smtps telnet tftp 
Features: IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets 
    
por blalasaadri 20.12.2016 / 16:43

1 resposta

0

Como o cURL 7.42.0 é possível com --path-as-is , conforme descrito na página man:

$ curl -v --path-as-is  localhost/../../foo.txt
*   Trying 127.0.0.1...
* Connected to localhost (127.0.0.1) port 80 (#0)
> GET /../../foo.txt HTTP/1.1
...
    
por 03.04.2017 / 10:24

Tags