* (security) Fixed a low-severity Cross Site Scripting issue in fe_adminLib.inc....
authorMichael Stucki <michael.stucki@typo3.org>
Wed, 11 Jun 2008 06:32:05 +0000 (06:32 +0000)
committerMichael Stucki <michael.stucki@typo3.org>
Wed, 11 Jun 2008 06:32:05 +0000 (06:32 +0000)
git-svn-id: https://svn.typo3.org/TYPO3v4/Core/branches/TYPO3_4-0@3794 709f56b5-9817-0410-a4d7-c38de5d9e867

ChangeLog
t3lib/class.t3lib_div.php
typo3/sysext/cms/tslib/media/scripts/fe_adminLib.inc

index 0aa28c5..9863c86 100755 (executable)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+2008-06-11  Michael Stucki  <michael@typo3.org>
+
+       * (security) Fixed a low-severity Cross Site Scripting issue in fe_adminLib.inc. For details, see http://typo3.org/teams/security/security-bulletins/typo3-20080611-1/ - thanks to Christian Seifert, Jeroen van Iddekinge and Arnd Messer for discovering and reporting this issue.
+
 2008-04-03  Ingmar Schlecht  <ingmar@typo3.org>
 
        * Fixed bug #4768: Missing is_array() check in tslib_fe::getStorageSiterootPids()
@@ -12,7 +16,7 @@
 
 2007-12-10  Ingmar Schlecht  <ingmar@typo3.org>
 
-       * (security) Fixed a low-severity SQL injection in the modfunc2 of indexed_search (only exploitable by BE users, and severity limited because addslashes() was already applied to the value - yet not within a quoted string) (Thanks to Henning Pingel for findind the issue and Andreas Otto for the fix)
+       * (security) Fixed a low-severity SQL injection in the modfunc2 of indexed_search (only exploitable by BE users, and severity limited because addslashes() was already applied to the value - yet not within a quoted string) (Thanks to Henning Pingel for finding the issue and Andreas Otto for the fix)
 
 2007-11-09  Benjamin Mack  <mack@xnos.org>
 
index 242e387..d26f4aa 100755 (executable)
@@ -4580,7 +4580,7 @@ class t3lib_div {
         * @return      string          The encoded value already quoted
         */
        function quoteJSvalue($value, $inScriptTags = false)    {
-               $value = addcslashes($value, '\''.chr(10).chr(13));
+               $value = addcslashes($value, '\''.'"'.chr(10).chr(13));
                if (!$inScriptTags)     {
                        $value = htmlspecialchars($value);
                }
index 1594bb4..7c55a49 100755 (executable)
@@ -1299,7 +1299,7 @@ class user_feAdmin        {
                        $inputArr
                );
 
-               return $inputArr;
+               return $this->escapeHTML($inputArr);
        }
 
        /**
@@ -1754,6 +1754,23 @@ class user_feAdmin       {
        function getFailure($theField, $theCmd, $label) {
                return isset($this->conf['evalErrors.'][$theField.'.'][$theCmd]) ? $this->conf['evalErrors.'][$theField.'.'][$theCmd] : $label;
        }
+
+       /**
+        * Will escape HTML-tags.
+        *
+        * @param       mixed           The unescaped data
+        * @return      mixed           The processed input data
+        */
+       function escapeHTML($var)       {
+               if (is_array($var)) {
+                       foreach ($var as $k => $value) {
+                               $var[$k] = $this->escapeHTML($var[$k]);
+                       }
+               } else {
+                       $var = htmlspecialchars($var, ENT_NOQUOTES);
+               }
+               return $var;
+       }
 }