'''Improper input validation'''<ref name=":0">{{cite web |work=[[Common Weakness Enumeration]] |publisher=[[MITRE]] |title=CWE-20: Improper Input Validation |url=http://cwe.mitre.org/data/definitions/20.html |date=December 13, 2010 |accessdate=February 22, 2011}}</ref> or '''unchecked user input''' is a type of [[vulnerability (computing)|vulnerability]] in [[computer software]] that may be used for [[security exploit]]s.<ref name=hacking>{{cite book|title=Hacking: the art of exploitation|series=No Starch Press Series|publisher=Safari Books Online|first=Jon|last=Erickson|edition=2, illustrated|year=2008|ISBN= 978-1-59327-144-2}}</ref> This vulnerability is caused when "[t]he product does not validate or incorrectly validates input that can affect the control flow or data flow of a program."<ref name=":0" />
{{Technical|date=March 2008}}
{{Notability|date=March 2008}}
Examples include:
Several implementation / design flaws are associated with [[String (computer science)|string]] programming, some of those are associated with [[security exploit]]s.
* [[Buffer overflow]]
* [[Cross-site scripting]] - unsafe output of input strings▼
* [[Directory traversal]]
* [[Null byte injection]]
* [[SQL injection]]
* [[Uncontrolled format string]]
== References ==
{{reflist}}
{{security-software-stub}}
[[Category: SecurityComputer security exploits]] ▼
== Concatenation problems ==
It is possible to cause ''String1 + User_Input_String + String2'' to behave in unepected ways by by crafting unanticipated User_Input_String, such as having string2 ignored in processing.
=== String termination ===
In many environments, it is possible to truncate the string with clever input.
* PHP: '''%00''' (NUL) can terminate strings, when used for API calls that uses it to terminate strings.
* Oracle: '''CHR(0)''' (NUL) can terminate strings when used for e.g. EXECUTE IMMEDIATE.
=== Comment out characters ===
In many environments, it is possible to "ask" the system to ignore the rest of the string, using "comment" characters.
* Many languages: '''/*''' means ignore everything until a '''*/''' combination.
* SQL: '''--''' means ignore rest of line
* Unix shells: '''#''' means ignore rest of line
== See also (other string problems) ==
* [[Format string attack]] - unchecked <code>[[printf|*printf]]</code> format strings are dangerous<!-- If exception handling is not involved -->
* [[Buffer overflow]] - Buffer overflows often occurs in unsafe string functions
▲* [[Cross-site scripting]] - unsafe output of input strings
* [[Directory traversal]] - concatenating strings to create a filename is not a good idea
* [[SQL injection]] - concatenating strings to create a SQL statement is not a good idea
▲[[Category:Security exploits]]
|