Propósito de usar urls codificados en base64

3

Me he topado con un sitio web, freshbooks.com , que utiliza urls codificados en base64 para todos los fines, desde datos de POSTing hasta un URI o sólo viendo algunos recursos.

Por ejemplo, una url para ver una factura en el sitio web es (se omite parte de la url para mayor claridad):

  

something.fresbooks.com/dmlld0ludm9pY2VGQjU1Mzc2

Cuando la cadena dmlld0ludm9pY2VGQjU1Mzc2 se decodifica, se obtiene viewInvoiceFB55376

¿Existe alguna razón desde el punto de vista de la seguridad para usar la URL en dicho formato o simplemente por alguna conveniencia de programación? La única razón por la que puedo pensar es evitar algunas herramientas automatizadas para extraer información sobre el diseño del sitio web. Si es así, ¿no se caracteriza este enfoque como seguridad por oscuridad?

    
pregunta Jor-el 03.12.2013 - 11:15
fuente

3 respuestas

4

No hay absolutamente ninguna ventaja de seguridad al utilizar este método de presentación de las URL. Esta es solo una forma tonta de hacer que el sitio web esté "listo para la producción" (lo que sea que signifique). De hecho, ni siquiera es una conveniencia de programación; es exactamente lo contrario. Hace mucho más difícil la depuración, especialmente cuando tiene que encontrar una cadena específica en una URL en los archivos de registro.

Los desarrolladores de ese sitio podrían haber optado por hacer que el sitio parezca más seguro al tener URLs crípticas y otras cosas. Sin embargo, eso no significa que se trata de seguridad por oscuridad .

Si su sitio web es vulnerable a inyección SQL e intentan ocultarlo mediante la codificación de las URL, luego es seguridad por oscuridad. Si su sitio web está bien protegido contra la inyección de SQL; XSS ; CSRF ; etc., y se codificaron para codificar las URL de esa manera, entonces es simplemente una estupidez.

Nota: He escuchado a personas argumentar que la codificación de las URL podría ocultar cierta información de los usuarios que practican el hombro, o que puede ayudar a reducir el rastreo, o cualquier número de argumentos de ese tipo. Todavía encuentro esta técnica tonta por las razones que mencioné anteriormente.

    
respondido por el Adi 03.12.2013 - 11:29
fuente
6

Base64 puede ser útil para pasar datos en URL cuando esos datos incluyen caracteres no compatibles con URL, aunque incluso en ese caso, hay opciones.

La estructura de lo que has decodificado en realidad parece sugerir que la cadena codificada es un comando con parámetros, lo que podría sugerir una dependencia de Base64 para los ataques de inyección, como dijo @Adnan.

Mi mejor suposición es que es un intento equivocado de fortalecer la seguridad.

    
respondido por el Owen 03.12.2013 - 11:42
fuente
5

Las URL HTTP pueden estar codificadas en Base64 no por razones de seguridad, sino por razones de aplicación, específicas de ese servidor web.

Aprovecharé mi experiencia con ASP.NET MVC que puede o no aplicarse a su situación.

Es perfectamente razonable, aunque no es fácil de usar, codificar datos que pueden ser mal interpretados por el navegador o un marco MVC. Base64 funciona cuando UrlEncoding no lo hace. Por ejemplo, tengo un carácter / que deseo enviar a otro servidor como una carga útil www.server.com/invoice.aspx?filehash=somedata1293/323222 , codificación Base64 o HTTP POST, es la única forma de enviar el valor de filehash en ASP.NET MVC sin personalización rutas.

Si quiero obtener esos datos, entonces tendría que codificarlos en Base64.

Aunque hay mejores soluciones, he visto este enfoque adoptado en aplicaciones internacionalizadas que admiten diferentes conjuntos de caracteres.

Sin embargo, es una mala idea considerar la codificación Base64 como una medida de seguridad, ya que a lo sumo hará que la "piratería" de la URL sea un poco más desafiante para el principiante. Y sí, en este caso sería seguridad por oscuridad.

    
respondido por el random65537 03.12.2013 - 16:54
fuente

Lea otras preguntas en las etiquetas