User-submitted data in Drupal can be divided into three categories:
No piece of user-submitted content should ever be placed as-is into HTML.
* Use check_plain or theme('placeholder') for plain text.
* Use check_markup or filter_xss for markup containing text.
* Use the t() function with @ or % placeholders to construct safe, translatable strings.
Cross site scripting (also known as XSS) occurs when a web application gathers malicious data from a user.
The data is usually gathered in the form of a hyperlink which contains malicious content within it.
The user will most likely click on this link from another website, instant message, or simply just reading a web board or email message.
Usually the attacker will encode the malicious portion of the link to the site in HEX (or other encoding methods) so the request is less suspicious looking to the user when clicked on.
After the data is collected by the web application, it creates an output page for the user containing the malicious data that was originally sent to it, but in a manner to make it appear as valid content from the website.
filter_xss() will Filters HTML to prevent cross-site-scripting (XSS) vulnerabilities.
Syntax:filter_xss($string, $allowed_tags = array('a', 'em', 'strong', 'cite', 'blockquote', 'code', 'ul', 'ol', 'li', 'dl', 'dt', 'dd'))
This code does four things:
$allowed_tags: An array of allowed tags.
Return value An XSS safe version of $string, or an empty string if $string is not valid UTF-8.