Scopo dell'utilizzo di URL codificati in base 64

3

Mi sono imbattuto in un sito web, freshbooks.com , che utilizza URL codificati base64 per tutti gli scopi, che vanno dal POSTing di dati sensibili a un URI o basta vedere qualche risorsa.

Ad esempio, un URL per visualizzare una fattura sul sito web è (una parte dell'URL omessa per chiarezza):

something.fresbooks.com/dmlld0ludm9pY2VGQjU1Mzc2

Quando la stringa dmlld0ludm9pY2VGQjU1Mzc2 è decodificata fornisce viewInvoiceFB55376

Ci sono ragioni dal punto di vista della sicurezza per usare l'URL in tale formato o solo per comodità di programmazione. L'unica ragione per cui posso pensare è di evitare alcuni strumenti automatici per estrarre informazioni sulla progettazione del sito web. Se è così, questo approccio non è caratterizzato come sicurezza dall'oscurità?

    
posta Jor-el 03.12.2013 - 11:15
fonte

3 risposte

4

Non c'è alcun vantaggio in termini di sicurezza nell'usare questo metodo di presentazione degli URL. Questo è solo un modo stupido per rendere il sito "pronto per la produzione" (qualunque cosa significhi). In realtà, non è nemmeno una comodità di programmazione; è l'esatto opposto. Rende il debug molto più difficile soprattutto quando devi trovare una stringa specifica in un URL nei file di registro.

Gli sviluppatori di quel sito potrebbero aver scelto di rendere il sito visualizzato più sicuro avendo URL criptici e quant'altro. Tuttavia, ciò non significa che sia sicurezza per oscurità .

Se il loro sito web è vulnerabile a Iniezione SQL e cercano di nasconderlo codificando gli URL, quindi è sicurezza per oscurità. Se il loro sito web è ben protetto contro l'iniezione SQL; XSS ; CSRF ; ecc. e hanno deiced per codificare gli URL in questo modo, quindi è semplicemente una stupidità.

Nota: ho sentito persone che sostengono che la codifica degli URL potrebbe nascondere alcune informazioni ai navigatori sulla spalla o che può aiutare a ridurre la scansione o qualsiasi numero di argomenti di quel tipo. Trovo ancora questa tecnica sciocca per i motivi che ho citato sopra.

    
risposta data 03.12.2013 - 11:29
fonte
6

Base64 può essere utile per il passaggio di dati negli URL quando tali dati includono caratteri non url friendly, sebbene anche allora ci siano opzioni.

La struttura di ciò che hai decodificato in realtà sembra suggerire che la stringa codificata sia un comando con parametri, che potrebbe suggerire una dipendenza da Base64 per gli attacchi di Injection, come ha detto @Adnan.

La mia ipotesi migliore è che si tratti di un tentativo errato di rafforzare la sicurezza.

    
risposta data 03.12.2013 - 11:42
fonte
5

Gli URL HTTP possono essere codificati Base64 non per ragioni di sicurezza, ma per motivi applicativi specifici per quel server web.

Mi baserò sulla mia esperienza con ASP.NET MVC che potrebbe o meno essere applicabile alla tua situazione.

È perfettamente ragionevole, anche se non facile da usare, codificare dati che potrebbero essere interpretati erroneamente dal browser o da un framework MVC. Base64 funziona quando UrlEncoding no. Ad esempio, ho un carattere / che voglio inviare a un altro server come un payload www.server.com/invoice.aspx?filehash=somedata1293/323222 , codifica Base64 o HTTP POST, è l'unico modo per inviare il valore di filehash in ASP.NET MVC senza personalizzato percorsi.

Se voglio OTTENERE quei dati, allora dovrei inserirlo in Base64.

Anche se ci sono soluzioni migliori, ho visto questo approccio adottato in applicazioni internazionalizzate che supportano diversi set di caratteri.

Tuttavia, è una cattiva idea considerare la codifica Base64 come una misura di sicurezza poiché al massimo renderà l'URL "hacking" casuale un po 'più difficile per i principianti. E sì, in questo caso sarebbe la sicurezza per l'oscurità.

    
risposta data 03.12.2013 - 16:54
fonte

Leggi altre domande sui tag