Cross-site Scripting (XSS) flaws occur whenever an application takes untrusted data and sends it to a web browser without proper validation or escaping. XSS allows attackers to execute scripts in the victim’s browser which can hijack user sessions, deface web sites, or redirect the user to malicious sites.
It is also called „HTML Injection“ by some but it actually is more like „HTML Injection + Scripting“. It usually happens when untrusted user input is printed on the web page, let us take a short example (no scripting):
– Vulnerable code : echo „Your name is: „ . $name ;
– User input: „Jack <a href=”“evilsite.com“”>Safe link</a>“
– User sees: Your name is: Jack Safe site
– User may be tricked!
Do not get fooled by the simplicity of the example.This is the most widespread attack currently although its not as severe as SQL Injection it can be pretty harmful depending on the case.
Stored XSS is the procedure where you attack once and it results always, for example the Script injection is saved on a comment and every users loads the malicious script while Reflected XSS is the procedure where you attack once and it results once.
Preventing XSS requires separation of untrusted data from active browser content.