stringtranslate.com

Cuerda mágica

En programación informática , una cadena mágica es una entrada que un programador cree que nunca llegará externamente y que activa una funcionalidad que de otro modo estaría oculta. Un usuario de este programa probablemente proporcionaría una entrada que daría una respuesta esperada en la mayoría de las situaciones. Sin embargo, si el usuario de hecho proporciona inocentemente la entrada predefinida, invocando la funcionalidad interna, la respuesta del programa a menudo es bastante inesperada para el usuario (por lo que parece "mágica"). [1]

Fondo

Por lo general, la implementación de cadenas mágicas se debe a limitaciones de tiempo. Un desarrollador debe encontrar una solución rápida en lugar de profundizar más en un problema y encontrar una mejor solución.

Por ejemplo, al probar un programa que toma los datos personales de un usuario y verifica su número de tarjeta de crédito, un desarrollador puede decidir agregar un atajo de cadena mágica mediante el cual al ingresar el improbable dato "***" como número de tarjeta de crédito, el programa procedería automáticamente como si la tarjeta fuera válida, sin perder tiempo verificándola. Si el desarrollador olvida eliminar la cadena mágica y un usuario del programa final ingresa "***" como número de tarjeta de crédito como marcador de posición mientras completa el formulario, el usuario activaría inadvertidamente la funcionalidad oculta.

Resolución

Situaciones/cuestiones de causa

A menudo, existen limitaciones de tiempo significativas que escapan al control del desarrollador desde el comienzo de su participación en un proyecto. Problemas comunes que pueden dar lugar a este antipatrón:

Formato estricto

Restringir el formato de la entrada es una posible solución de mantenimiento (corrección de errores). [ aclaración necesaria ] Básicamente, esto significa validar la información de entrada para comprobar que está en el formato correcto, con el fin de reducir la posibilidad de que el usuario descubra la cadena mágica. Los ejemplos incluyen validar un número de teléfono para garantizar que solo contenga dígitos (y posiblemente espacios y puntuación en una medida limitada) o verificar que el nombre de una persona tenga un nombre y un apellido (y esté escrito con mayúsculas apropiadas). Se hace una excepción para la cadena mágica en el código de validación para que no sea rechazada por la validación. Se espera que, dado que un usuario probablemente notará rápidamente la aplicación estricta del formato, es probable que no se le ocurra intentar ingresar una cadena que no se ajuste al formato. Por lo tanto, es muy poco probable que el usuario intente ingresar la cadena mágica.

Al igual que con cualquier proceso de validación de entrada, es importante asegurarse de que el formato no sea restrictivo de manera que restrinja involuntariamente el uso de la aplicación por parte de algunos usuarios. Un ejemplo de esto es restringir la entrada de un número de teléfono o un código postal [6] en función del sistema de un país (por ejemplo, exigir que cada usuario proporcione un código postal de cinco dígitos ), lo que causa problemas a los usuarios legítimos que se encuentran en otros países.

Implementación con propósito

Como suele suceder con los antipatrones, existen escenarios específicos en los que las cadenas mágicas son una solución correcta para una implementación. Algunos ejemplos son los códigos de trampa [7] y los huevos de Pascua . Además, hay casos en los que los usuarios inventan cadenas mágicas y los sistemas que no han codificado para aceptarlas pueden producir resultados inesperados, como la falta de matrículas. [8]

Incidentes

La siguiente es una lista de algunos incidentes conocidos en los que el uso de una cuerda mágica ha causado problemas.

Véase también

Referencias

  1. ^ Chris Falter (6 de marzo de 2008), Una buena solución para los datos de cadenas mágicas, Egghead Cafe Tuturiols , consultado el 11 de mayo de 2009
  2. ^ Wang Lam (21 de mayo de 2003), The Behavior of NULL's in SQL, Stanford University , consultado el 13 de mayo de 2009
  3. ^ Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates; 2004, Patrones de diseño Head First , 1.ª ed., O'Reilly, Capítulo 6, pág. 214, El patrón Command , ISBN 0-596-00712-4 , ISBN 978-0-596-00712-6  
  4. ^ James McCaffrey (2009), Automatización de pruebas para aplicaciones web ASP.NET con SSL, Microsoft , consultado el 13 de mayo de 2009
  5. ^ Andrew Cumming; 2007, SQL Hacks , 1.ª ed., O'Reilly, pág. 174, Cómo prevenir un ataque de inyección SQL , ISBN 0-596-52799-3 , ISBN 978-0-596-52799-0  
  6. ^ Brian Knight, Allan Mitchell, Darren Green, Douglas Hinson, Kathi Kellenberger; 2005, Servicios de integración de SQL Server 2005 profesionales , 1.ª ed., John Wiley and Sons, Capítulo 5, pág. 129, Manejo de datos sucios , ISBN 0-7645-8435-9 , ISBN 978-0-7645-8435-0  
  7. ^ Sezen, Tonguc Ibrahim; Isikoglu, Digdem (27 de abril de 2007). "De los Ozans a los God-Modes: trampas en el entretenimiento interactivo de diferentes culturas" (PDF) . p. 8. Consultado el 24 de enero de 2009 .
  8. ^ ab "¿Qué sucede cuando su matrícula dice 'SIN PLACA'?". 30 de octubre de 1999.
  9. ^ Glave, James (30 de agosto de 1999). «Los piratas informáticos de Hotmail: 'Lo hicimos'». Wired . Condé Nast . Consultado el 16 de julio de 2024 .
  10. ^ Baraniuk, Chris (25 de marzo de 2016). "Estas personas desafortunadas tienen nombres que rompen las computadoras". BBC.com . Consultado el 30 de enero de 2022 .
  11. ^ Null, Christopher (5 de noviembre de 2015). "Hola, soy el Sr. Null. Mi nombre me hace invisible para las computadoras". Wired . Consultado el 30 de enero de 2022 .