From Surf Wiki (app.surf) — the open knowledge base
Magic string
Input which activates otherwise hidden functionality
Input which activates otherwise hidden functionality
In computer programming, a magic string is an input that a programmer believes will never come externally and which activates otherwise hidden functionality. A user of this program would likely provide input that gives an expected response in most situations. However, if the user does in fact innocently (unintentionally) provide the pre-defined input, invoking the internal functionality, the program response is often quite unexpected to the user (thus appearing "magical").
Background
Typically, the implementation of magic strings is due to time constraints. A developer must find a fast solution instead of delving more deeply into a problem and finding a better solution. For example, when testing a program that takes a user's personal details and verifies their credit card number, a developer may decide to add a magic string shortcut whereby entering the unlikely input of "" as a credit card number would cause the program to automatically proceed as if the card were valid, without spending time verifying it. If the developer forgets to remove the magic string, and a user of the final program happens to enter "" as a placeholder credit card number while filling in the form, the user would inadvertently trigger the hidden functionality.
Resolution
Situations/issues of cause
Often there are significant time constraints out of the developer's control right from the beginning of their involvement in a project. Common issues that might lead to this anti-pattern as a result:
- Null != null{{Citation
- Programmed into a corner. Sometimes a design seems straightforward and even simple, but turns out to have a logical flaw relating to possible user input due to an often unforeseen circumstance towards the end of planned development. Thus a developer might feel the need to implement a user input with special security/operational allowances to deal with such circumstances. This can be particularly ironic since it will sometimes become obvious that a more robust design from the beginning would likely have left room to handle the flaw. However this would perhaps have taken too much time to implement and it might have conflicted with the fundamental engineering concept of KISS, keeping a design and implementation simple and meeting only the initial necessary requirements.
- Allowing external access to a global flag.{{Citation
Strict formatting
Restricting the format of the input is a possible maintenance (bug fixing) solutionessentially this means validating input information to check that it is in the correct format, in order to reduce the possibility of the magic string being discovered by the user. Examples include validating a telephone number to ensure that it contains only digits (and possibly spaces and punctuation to a limited extent) or checking that a person's name has a forename and a surname (and is appropriately capitalised). An exception is made for the magic string in the validation code so that it will not be rejected by validation. It is expected that, since a user would likely quickly notice the strict enforcement of formatting, it would likely not occur to the user to try inputting a string not conforming to the format. Therefore, it is very unlikely for the user to try the magic string.
As with any input validation process, it is important to ensure that the format is not restrictive in a way that unintentionally restricts the use of the application by some users. An example of this is restricting telephone number or postal code input based on one country's system (e.g. requiring every user to give a five-digit ZIP code), causing problems for legitimate users who are based in other countries.
Purposeful implementation
As is often the case with anti-patterns, there exist specific scenarios where magic strings are a correct solution for an implementation. Examples include cheat codes and Easter eggs. Furthermore, there are cases when users invent magic strings, and systems that have not coded to accept them can produce unexpected results such as missing license plates.
Incidents
The following is a list of some known incidents where use of a magic string has caused problems.
- In several different cases, motorists with personalized strings on their vehicle registration plates have received incorrect traffic tickets. In affected ticketing systems, when police officers would fill out a traffic ticket for a car with no registration plate, they would write "NOPLATE", "NOTAG", "MISSING", or similar. This caused issues when motorists were granted actual registration plates with these values, and thus began receiving numerous traffic tickets intended for these plateless vehicles.
- In 1999, hackers revealed a security flaw in Hotmail that permitted anybody to log in to any Hotmail account using the password 'eh'. At the time it was called "the most widespread security incident in the history of the Web".
- People with the last name Null have reported a variety of problems using online systems, such as being unable to book plane tickets, use government tax websites, or pay utility bills. The issue stems from these systems confusing their name for a null pointer. Depending on the system, this may cause the system to not show their name, to ask the user to enter a different name (sometimes with a message claiming that the name field had been left blank), or to show an error message.
References
References
- Chris Falter. (2008-03-06). "A Good Solution for Magic String Data". Egghead Cafe Tuturiols.
- Eric Freeman, Elisabeth Freeman, Kathy Sierra, Bert Bates; 2004, ''Head First Design Patterns'', 1st ed., O'Reilly, Chapter 6, pg. 214, ''The Command Pattern'', {{ISBN. 0-596-00712-4, {{ISBN. 978-0-596-00712-6
- Andrew Cumming; 2007, ''SQL Hacks'', 1st ed., O'Reilly, pg. 174, ''Prevent an SQL Injection Attack'', {{ISBN. 0-596-52799-3, {{ISBN. 978-0-596-52799-0
- Brian Knight, Allan Mitchell, Darren Green, Douglas Hinson, Kathi Kellenberger; 2005, ''Professional SQL server 2005 integration services'', 1st ed., John Wiley and Sons, Chapter 5, pg. 129, ''Handling Dirty Data'', {{ISBN. 0-7645-8435-9, {{ISBN. 978-0-7645-8435-0
- Sezen, Tonguc Ibrahim. (2007-04-27). "From Ozans to God-Modes: Cheating in Interactive Entertainment From Different Cultures".
- (October 30, 1999). "What Happens when Your License Plate Says 'NO PLATE'?".
- Glave, James. (August 30, 1999). "Hotmail Hackers: 'We Did It'". Condé Nast.
- (25 March 2016). "These unlucky people have names that break computers".
- (5 November 2015). "Hello, I'm Mr. Null. My Name Makes Me Invisible to Computers".
This article was imported from Wikipedia and is available under the Creative Commons Attribution-ShareAlike 4.0 License. Content has been adapted to SurfDoc format. Original contributors can be found on the article history page.
Ask Mako anything about Magic string — get instant answers, deeper analysis, and related topics.
Research with MakoFree with your Surf account
Create a free account to save articles, ask Mako questions, and organize your research.
Sign up freeThis content may have been generated or modified by AI. CloudSurf Software LLC is not responsible for the accuracy, completeness, or reliability of AI-generated content. Always verify important information from primary sources.
Report