Ho appena copiato per errore un comando wget nella casella di ricerca di eBay e ho ricevuto il seguente errore:
Succede con wget http://google.com
o curl http://google.com
o qualsiasi altro URL ...
Sembra disinfettare l'input e rimuovere le barre se inserisci semplicemente un URL ma non se lo precedi con wget o arricciatura. Che cosa potrebbero forse fare che fa sì che un comando wget o curl ignori la loro sanificazione e produca un risultato diverso?
I presumo che ebay.com abbia installato un Web Application Firewall, che riconosce la tua richiesta come un possibile attacco. Pertanto, la tua richiesta viene annullata e ricevi un HTTP 403 - Access Denied
. Il mod_security WAF per Apache, nginx e IIS si comporta in modo simile: se è in modalità prevenzione, risponderà anche con HTTP 403
per impostazione predefinita [1].
La maggior parte dei WAF ha una sorta di set di regole. Controllano se la tua richiesta corrisponde a una delle loro regole, magari con espressioni regolari. Suppongo inoltre che una di quelle regole assomigli a (wget|curl) (http|https)://.*
[2]. La "sanificazione" delle doppie barre in avanti nell'URL avviene molto probabilmente a livello di applicazione. Stringhe come asdf//
verrà anche abbreviato in asdf
.
[1] https://github.com/SpiderLabs/ModSecurity/wiki/Reference-Manual#secdefaultaction
[2] Evita la fuga di barre in avanti per motivi di leggibilità