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. Refer: http://drupal.org/node/28984
1 Comment
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. Many popular guestbook and forum programs allow users to submit posts with html and javascript embedded in them. If for example I was logged in as "john" and read a message by "joe" that contained malicious javascript in it, then it may be possible for "joe" to hijack my session just by reading his bulletin board post. 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. Refer: http://api.drupal.org/api/drupal/modules!filter!filter.module/function/filter_xss/6 |