¿Es seguro incluir marcas de tiempo en los códigos de error que se muestran a los usuarios?

1

Si se produce un error, nuestra tienda web genera un código de error que se muestra al usuario. Por el momento, no contiene una marca de tiempo, sino solo el día del mes. Eso no es intuitivo, pero asumo que la intención original era dar al posible atacante la menor cantidad de información posible.

Sin embargo, sería más conveniente incluir una marca de tiempo más precisa, por ejemplo, YYYY-MM-DD-HH-MM.

¿Es un agujero de seguridad mostrar información de tiempo más precisa?

No estoy hablando de una marca de tiempo de alta resolución, sino solo el tiempo aproximado, por lo que es más fácil localizar los archivos de registro y descubrir rápidamente qué versión del código causó el problema.

Todo lo que ve el atacante es la hora actual y la zona horaria que usamos. No me parece crítico, pero tal vez me haya pasado algo por alto.

    
pregunta Philipp Claßen 04.02.2015 - 18:17
fuente

3 respuestas

2

No veo un problema aquí porque el usuario sabrá la hora exacta en que hizo algo. Teniendo en cuenta que un servidor necesita sincronizar su tiempo con una fuente de tiempo autorizada, no habrá nada "filtrado" para el usuario que el usuario ya no sepa.

Si desea ocultar algún aspecto de su servidor (como la zona horaria en la que reside), puede procesar sus registros como hora UTC como un formato de hora generalizado.

    
respondido por el schroeder 04.02.2015 - 18:50
fuente
1

Uno de los principios de la programación segura es proporcionar al usuario la menor cantidad de información posible en un mensaje de error. Solo muestra la marca de tiempo si el usuario necesita saberlo .

No veo ningún uso de una marca de tiempo en un mensaje de error que enfrenta el usuario, por lo que lo omitiría.

Se puede usar una marca de tiempo en un ataque de canal lateral para intentar forzar una contraseña. Es muy poco probable, muy difícil de hacer correctamente, pero es posible.

Puede usar una var especial para mostrar un error detallado con marcas de tiempo:

if (isset($_GET['is_debugging'))
   echo $timestamp;

Esto solo mostrará la marca de tiempo si la var is_debugging está definida en la consulta. Los usuarios finales (con suerte) no sabrán acerca de la var, y los desarrolladores pueden usarla para depurar.

    
respondido por el ThoriumBR 04.02.2015 - 20:24
fuente
1

Esta información puede ser útil desde una perspectiva de soporte, de modo que el usuario pueda abrir un ticket para su tienda web y saber cuándo se encontró con el problema descrito. De lo contrario, tratar de resolver los problemas de los usuarios que afirman haber encontrado un error "la semana pasada, martes por la mañana ... a menos que fuera miércoles ... en realidad tal vez fue al final de la tarde ...", puede terminar perdiendo demasiado tiempo investigando los registros sin saber qué, cuándo y dónde buscar.

Una buena alternativa, IMHO, veo cada vez más a menudo es mostrar una representación de base64 de algunos datos encriptados, y le dice al cliente que envíe estos datos al centro de soporte si necesita ayuda (Google usa este sistema, un ejemplo Puede encontrar aquí ). En estos datos, tiene más libertad para colocar los datos que pueden ayudarlo a investigar el problema encontrado sin revelar nada al usuario final (y, como beneficio adicional, le garantiza que el usuario realmente encontró un problema ...).

    
respondido por el WhiteWinterWolf 05.02.2015 - 11:37
fuente

Lea otras preguntas en las etiquetas